list 容器如果如何修改元素的值

luckyboy101 2009-09-10 02:37:50
list 容器如果如何修改元素的值
...全文
1087 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoXiaoRab 2009-09-10
  • 打赏
  • 举报
回复
FUck,写太快写错了
Fly_1101 2009-09-10
  • 打赏
  • 举报
回复
这是因为你是这样定义的
list <kont> ::iterator it;

(*it)就是此时迭代器所指元素的内容为结构体kont(非指针)
Fly_1101 2009-09-10
  • 打赏
  • 举报
回复
cout <<it->x <<" " <<it->y <<endl; 这样写虽然也可以编译和正常运行,不过建议你改成
cout <<(*it).x <<" " <<(*it).y < <endl; 在底层上是一样的,但对于源代码的逻辑上意义就不同了

Fly_1101 2009-09-10
  • 打赏
  • 举报
回复
(*it).x=9
luckyboy101 2009-09-10
  • 打赏
  • 举报
回复
#include <list>
#include <iostream>

using namespace std;
struct kont
{
int x;
int y;
};
int main()
{
list<kont> k;
struct kont a;
for(int i=0;i<6;i++)
{
a.x=i;
a.y=i;
k.push_back(a);
}
list<kont> ::iterator it;
it=k.begin();
while(it!=k.end())
{
cout<<it->x<<" "<<it->y<<endl;
it++;
}
cout<<endl;
it=k.begin();
(*it)->x=9;//错误,left of '->x' must point to class/struct/union

cout<<it->x<<" "<<it->y<<endl;
return 0;
}
oyljerry 2009-09-10
  • 打赏
  • 举报
回复
itr指向list,然后取出来的*itr就是结构体,然后再iter->x, iter->y 修改
MoXiaoRab 2009-09-10
  • 打赏
  • 举报
回复
std::list <type>::iterator iter;

iter = ltNum.begin();
iter++;

(*iter)->x = 1;
(*iter)->y = 1;
luckyboy101 2009-09-10
  • 打赏
  • 举报
回复
如果是一个结构体该怎么修改
列如:
struct knot
{
int x;
int y;
}
list<struct knot> ::iterator itr;
Fly_1101 2009-09-10
  • 打赏
  • 举报
回复
比如有如下list

std::list<int> ltNum;
ltNum.push_back(1);
ltNum.push_back(2);
ltNum.push_back(3);

如果我要修改第二个元素的值改为5
std::list<type>::iterator iter;

iter = ltNum.begin();
iter++;

(*iter) = 5;
mazm_yanzhu 2009-09-10
  • 打赏
  • 举报
回复
取出指针直接修改不就了了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧