簡體   English   中英

向量 push_back 不起作用 C++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM