【发布时间】:2015-02-12 05:37:58
【问题描述】:
如何循环这个?
我已经试过了:
//----- code
std::vector<std::map<std::string, std::string> >::iterator it;
for ( it = users.begin(); it != users.end(); it++ ) {
std::cout << *it << std::endl; // this is the only part i changed according to the codes below
}
//----- error
error: initializing argument 1 of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = std::map<std::basic_string<char>, std::basic_string<char> >]’
//----- code
std::cout << *it["username"] << std::endl;
//----- error
note: template argument deduction/substitution failed:
note: ‘std::map<std::basic_string<char>, std::basic_string<char> >’ is not derived from ‘const std::complex<_Tp>’
//----- code
std::cout << *it->second << std::endl; // also tried with parenthesis - second()
//----- error
error: ‘class std::map<std::basic_string<char>, std::basic_string<char> >’ has no member named ‘second’
//----- code
for( const auto& curr : it ) std::cout << curr.first() << " = " << curr.second() << std::endl;
//----- error
error: unable to deduce ‘const auto&’ from ‘<expression error>’
最后
//----- code
std::map<std::string, std::string>::iterator curr, end;
for(curr = it.begin(), end = it.end(); curr != end; ++curr) {
std::cout << curr->first << " = " << curr->second << std::endl;
}
//----- error
‘std::vector<std::map<std::basic_string<char>, std::basic_string<char> > >::iterator’ has no member named ‘begin‘ & ‘end’
我希望我给出一个清晰的细节..上面是代码然后下面是错误..目前我的大脑是空白的。
对此感到抱歉..
我已经使它适用于这种类型:std::map<int, std::map<std::string, std::string> >,并且我正在尝试使用矢量作为选项。
【问题讨论】:
标签: c++ arrays dictionary multidimensional-array vector