遍历 std:list<wstring>
Posted
技术标签:
【中文标题】遍历 std:list<wstring>【英文标题】:Iterating through std:list<wstring> 【发布时间】:2012-04-17 18:55:12 【问题描述】:这是我的代码:
for (std::list<std::wstring>::iterator itr = kb->titles.begin(); itr != kb->titles.end() ; itr++)
_size += *itr.size();
我想要做的是访问列表中包含的每个 wstring 并调用它的 size() 成员函数。但是,itr 指出的似乎不是迭代的 wstring 元素,我收到错误(错误 C2039: 'size' : is not a member of 'std::_List_iterator<_mylist>')
如果您想知道 kb 是什么,它是指向以 std::list<std::wstring> titles;
作为其成员之一的结构的指针。
关于如何解决这个问题的任何想法?
【问题讨论】:
使用 C++11,使用 ranged-for 循环变得容易:for (auto title : titles) _size += title.size();
@chris 在这种情况下你可能希望它是for( const auto& title : titles ) /* .. */
@Prætorian,哎呀,你是对的。我打算在那里放一个 const ,每个都是 wstring 所以是的 :) 谢谢你的理解。
【参考方案1】:
操作符优先级是这里的问题,试试
_size += (*itr).size();
甚至更好,
_size += itr->size();
【讨论】:
【参考方案2】:您缺少括号:
_size += (*itr).size();
_size += itr->size();
两者都应该工作。
【讨论】:
以上是关于遍历 std:list<wstring>的主要内容,如果未能解决你的问题,请参考以下文章
List的遍历——list iterator not incrementable