gpt4 book ai didi

c++ - 映射到二维 vector

转载 作者:太空狗 更新时间:2023-10-29 21:03:58 26 4
gpt4 key购买 nike

我想创建一个 C++ 映射,其中键是 int,值是 double 的二维 vector :

std::map<int, std::vector<vector<double>>> myMap;

假设我填充了它,现在我想更新每个键映射的第二个 vector (例如将每个元素除以 2)。我将如何迭代访问该 vector ?下面语句中的“itr->second[0]”语法显然是错误的。该操作的正确语法是什么?

for(std::map<in, vector<vector<double> > > itr = myMap.begin(); itr != myMap.end();++itr)
{
for(int i = 0;i < itr->second[0].size();++i)
{
itr->second[0][i] /= 2;
}
}

谢谢, ruby

最佳答案

itr->secondvector<vector<double>> 的一种,因此在您可以将单元格除以数字之前,您需要迭代“两级”索引。

for ....
{
vector<vector<double>>& vv = itr->second;
for(int i=0; i<vv.size(); ++i)
for(int j=0; j<vv[i].size(); ++j)
vv[i][j] /= 2
}

我是否正确理解了您的问题?

编辑:编辑帖子后,代码几乎是正确的。您有一些错别字,您的迭代器类型无效,请参阅(下面的代码至少在 mingw 中编译)

std::map<int,std::vector<std::vector<double> > > myMap;

for(std::map<int, std::vector<std::vector<double> > >::iterator itr = myMap.begin();
itr != myMap.end();
++itr)
{
for(int i = 0;i < itr->second[0].size();++i)
{
itr->second[0][i] /= 2;
}
}

请注意 ::iterator添加。不能是 ::const_iterator因为要修改 map

关于c++ - 映射到二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com