【发布时间】:2011-08-02 03:07:06
【问题描述】:
我正在尝试在项目中使用 STL 列表,但我遇到了以下问题。
我希望我的列表存储一个结构。比如这个
struct mystruct
{
int x;
int y;
};
然后我使用迭代器像这样访问列表中的每个结构。
list<mystruct> L;
list<mystruct>::iterator lit;
for(lit=L.begin();lit!=L.end();lit++)
{
if(lit->x==1) cout << "<NUM," << lit->x << "> ";
if(lit->y==2) cout << "<ID," << lit->y << "> ";
}
这可行,但我想一次得到一个结构,所以我做了这个函数
mystruct Myclass::next(void)
{
if(lit!=L.end())
{
lit++;
}
return *lit;
}
但我在运行它后出现错误,我无法理解为什么会发生这种情况。
有什么想法吗?
【问题讨论】:
-
什么是错误,Myclass的接口是什么? (以成员为例)
-
只是一个建议,当使用迭代器时(像你一样,在 for 循环等中)使用前缀增量(++lit 而不是 lit++),它更有效。
-
错误是“列表迭代器不可递增”。
标签: c++ list stl iterator next