我对矢量相当陌生,需要一些关于矢量操作的额外帮助。2D矢量 - 通过搜索删除行
我目前已经创建了一个全局的StringArray向量,该向量由文本文件中的字符串值填充。
typedef std::vector<std::string> StringArray;
std::vector<StringArray> array1;
我已经创建了一个名为“删除”功能,从用户获取输入,并最终将比较输入对数组中的第一个值,看看它是否匹配。如果是这样,整行将被删除,被删除行下的所有元素将被“洗牌”到一个位置以填满游戏。
的人口阵列看起来像这样:
Test1 Test2 Test3
Cat1 Cat2 Cat3
Dog1 Dog2 Dog3
而且remove函数如下:
void remove()
{
string input;
cout << "Enter the search criteria";
cin >> input;
我知道我需要一个循环遍历数组迭代,比较每个元素与输入值并检查它是否匹配。
我认为这将是这样的:
for (int i = 0; i < array1.size(); i++)
{
for (int j = 0; j < array1[i].size(); j++)
{
if (array1[i] = input)
**//Remove row code goes here**
}
}
但是,这是我的理解。我不太确定A)如果该循环是正确的,B)我将如何去删除整行(不仅仅是找到的元素)。我是否需要将array1复制到一个临时向量,丢失指定的行,然后复制回array1?
我最终要用户输入“CAT1”为例,然后我到了array1最终被:
Test1 Test2 Test3
Dog1 Dog2 Dog3
所有帮助表示赞赏。谢谢。
太好了,就是我在罗比之后。我知道我有这个逻辑,只是不知道如何把它付诸实践!非常感谢您的帮助! :) – GuestUser140561
他不需要内部循环,因为他只想比较每个StringArray中的第一个值。另外,如果不需要顺序操作,则可以使用StringArray键的第一项对array1使用std :: map,因此在比较输入时具有O(1)。 –