[英]vector push_back doesn't work c++
為什么 push_back 沒有按預期工作? 很困惑為什么它不適用於我下面的當前代碼
using namespace std;
void addItem(vector<string>& STRING, string item)
{
STRING.push_back(item);
}
int main()
{
string item;
vector<string> STRING(100);
ifstream myFile;
myFile.open("food.txt");
if (myFile.is_open()) //code where I store my data into the array
{
int i = 0;
while (!myFile.eof())
{
getline(myFile, STRING[i]);
i++;
}
}
myFile.close();
cin >> item;
addItem(STRING, item);
int x = 0;
while(!STRING[x].empty()) //code to print the current array
{
cout << STRING[x];
printf("\n");
x++;
return 0;
}
}
我初始化數組的方式有問題嗎? 因為當我使用 CodeBlocks 時,有 0 個錯誤和 0 個警告,所以我認為它很好,直到我運行它。
您的代碼確實有效。 但是,您在創建時指定了矢量的初始大小。 您的向量從 100 個元素的初始大小開始。 話雖如此,您確實是在向數組中添加新元素,但是 push_back() 將它放在已經存在的數組之后 - 第 100 個位置。
您可以通過使用默認構造函數來避免它
vector<string> STRING;
另外,我將在此處粘貼我的 printList 函數,這將向您展示問題所在:
void printList(vector<string> &STRING)
{
cout << "size: " << STRING.size() << '\n';
for (int i = 0; i < STRING.size(); i++)
cout << i << ":" << STRING[i] << ", ";
cout << '\n';
}
@Edit:修正語法錯誤(向量而不是向量)。 感謝您指出 Christian Hackl!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.