Функция push_back() в векторе<string>, переданная по ссылке в C++, не изменяет вектор

Когда я использовал функцию pushback(), вектор остался прежним.

Я объявил вектор в основном:

 vector<string> word_list_v;

затем вызывается функция:

 void extract(string dictionary_file_name, vector<string> &word_list_v)

эта функция вызывает еще одну:

void vector_line(string line, vector<string> &word_list_v)

строка является строкой.

эта последняя функция имеет следующий код:

word_list_v.push_back(line);

однако вектор не меняется. При отладке я понял, что внутри функции она даже не меняется.

1 ответ

Следующий пример работает как положено:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void vector_line(string line, vector<string> &word_list_v)
{
    word_list_v.push_back(line);
}

void extract(string dictionary_file_name, vector<string> &word_list_v)
{
    vector_line("This is a line", word_list_v);
}

int main()
{
    vector<string> word_list_v;
    extract("file", word_list_v);

    for (auto& str : word_list_v)
        cout << str << endl;
}

выход:

$ g++ -std=c++14 -Wall -o vector_test vector_test.cc 
$ ./vector_test 
This is a line
Другие вопросы по тегам