Функция 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