В настоящее время я изучаю, как использовать списки в C++ (и C++ в целом), введя строковые значения в список, в цикле do-while, а затем распечатать их из списка в цикле for, но столкнулись с ошибкой:
error C2440: '=': cannot convert from 'std::list<std::string,std::allocator<_Ty>> *'
to 'std::string*'
Ошибка относится к этой конкретной строке:
output = &container[k];
Я не знаю, как это исправить, или что я делаю неправильно. Я также не знаю, проблема с моим пониманием списков, или я неправильно использую указатели.
Я был бы признателен, если бы любые ответы могли быть сформулированы как можно проще, спасибо.
Остальная часть кода:
#include <iostream>
#include <string>
#include <list>
using namespace std;
void main()
{
int i = 0;
list<string> container[10];
string input, *output;
do{
cout << "enter a value for container location " << i << endl;
cin >> input;
container[i].push_back(input);
i++;
}while (i < 10);
for (int j = 0, k = 0; j < 10; j++)
{
output = &container[k];
cout << "Value of container location " << j << " = " << *output << endl;
k++;
}
}
На основе вашего кода вы явно подразумеваете, что ваш тип для container
должен быть vector<string>
без [10]
или просто string
(при сохранении спецификации массива).
Pignaut, вы объявляете массив (размером 10) списка String, поэтому каждый элемент массива представляет собой список строк. Вот почему эта ошибка. Но, я думаю, вы хотите объявить список строк.
main
имеет тип возвратаint
...