C++: элегантный способ печати всех пар в списке
Я определяю списки как это:
std::list < pair<string, int> > token_list;
Я хочу распечатать все элементы списка, поэтому я пишу это:
std::copy(std::begin(token_list),
std::end(token_list),
std::ostream_iterator<pair<string, int> >(std::cout, " "));
Но я получаю эту ошибку:
error 2679:binary "<<"the operator (or unacceptable conversion) that accepts the right operand oftype (or unacceptable)
в Visual Studio. Как я могу это исправить, или есть какой-то другой способ распечатать все пары в списке?
1 ответ
Вы получаете эту ошибку, потому что нет перегруженного operator <<
за std::pair
,
Однако распечатать список пар не так сложно. Я не знаю, если это elegant way to print all pairs in a list
но все, что вам нужно, это простой цикл:
#include <iostream>
#include <list>
#include <string>
int main() {
std::list<std::pair<std::string, int>> token_list = { {"token0", 0}, {"token1", 1}, {"token2", 2} };
for ( const auto& token : token_list )
std::cout << token.first << ", " << token.second << "\n";
return 0;
}