映射到二维向量
Map to a 2 dimensional vector
我想创建一个C++映射,其中键是,比如说,int
,值是double
的二维向量:
std::map<int, std::vector<vector<double>>> myMap;
假设我填充了它,现在我想更新每个键映射的第二个向量(例如将每个元素除以 2)。我将如何迭代访问该向量?下面语句中的"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;
}
}
谢谢Rubi
itr->second
是一种vector<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
,因为地图将被修改
我得到了一个解决方案,但有点不同
- 使用 2D 矢量插入值
- 将该矢量复制到地图中
- 使用另一个 2D 矢量从地图中复制内容并完成工作
- 将修改后的矢量复制回地图
map<int,vector<vector<double>>> myMap;
vector<vector<double>>v;
v.push_back({7,8});
v.push_back({6,9,8});
myMap[0]=v;
for(auto i=myMap.begin();i!=myMap.end();i++)
{
vector<vector<double>>v1=i->second;
for(int j=0;j<v1.size();j++)
{
for(int k=0;k<v1[j].size();k++)v1[j][k]/=2;
}
i->second=v1;
}
p.s Ik 我迟到了 8 岁
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量