【发布时间】:2012-05-14 02:17:21
【问题描述】:
我有一个map<string, list<int> >,我想遍历列表并打印出每个数字。我不断收到关于 const_iterator 和迭代器之间转换的编译错误。我做错了什么?
for (map<string, list<int> >::iterator it = words.begin(); it != words.end(); it++)
{
cout << it->first << ":";
for (list<int>::iterator lit = it->second.begin(); lit != it->second.end(); lit++)
cout << " " << intToStr(*lit);
cout << "\n";
}
error: conversion from
‘std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::list<int, std::allocator<int> > > >’
to non-scalar type
‘std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::list<int, std::allocator<int> > > >’
requested|
【问题讨论】:
-
您的
words地图是否有可能是const? -
是的,我不明白它是 const,因为我没有在受保护的部分将它定义为 const。它变成了 const 与类中的函数(即 const)完全忘记了它是一个 const 函数。
标签: c++ list map iterator auto