我對矢量相當陌生,需要一些關於矢量操作的額外幫助。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)。 –