You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用临时空间访问list<vector<int>>中的元素?

如何直接访问list<vector>中的元素?

你的问题核心是运算符优先级导致的写法错误,*it[0]不可行是因为[]优先级高于*,实际执行的是*(it[0])——这是把迭代器当作数组下标访问,并非你需要的“先解引用迭代器得到vector,再访问其元素”。

完全可以不使用临时空间直接访问元素,只需要调整运算符的执行顺序:

list<vector<int>> a={{3,10,1},{5,10,0}};

auto it=a.begin();
int t1 = (*it)[0]; // 正确,直接获取第一个vector的第一个元素,值为3
int t2 = (*it)[2]; // 获取第一个vector的第三个元素,值为1

// 访问第二个vector的元素只需移动迭代器
++it;
int t3 = (*it)[1]; // 获取第二个vector的第二个元素,值为10

如果是遍历整个容器,也可以用范围for循环直接访问,同样不需要临时空间:

for (const auto& vec : a) {
    // 直接访问当前vector的元素
    cout << vec[0] << " " << vec[1] << endl;
}

内容的提问来源于stack exchange,提问作者Grimshingamii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:04:54