推回数据从矢量到矢量的地图
pushback data from vector to vector of map
我创建了一个名为select_p的映射,这个映射的向量称为pts。我已经将数据存储在一个数组中,我想将这些数据推入映射向量中。我试着把数组的值插入到新的向量中,然后再推到我的地图中。但是它不能工作,请帮我纠正这些代码?由于
#include<iostream>
#include<cstdlib>
#include <map>
#include <vector>
using namespace std;
int main()
{
int M=7;
int N=6;
int i=0;
int * temp;
map<int,vector<int> > select_p;
vector<int>pts;
for (int m=0; m<M; m++)
{
for (int n=0; n<N; n++)
{
vector<int>id;
if (n==0 && m==5)
{
temp = new int[3,i+N,i+N+1,i+1];
unsigned ArraySize = sizeof(temp) / sizeof(int);
id.insert(id.begin(),temp[0], temp[ArraySize]);
select_p[i].push_back(id);
}
i++;
}
}
delete[] temp;
system("PAUSE");
return 0;
}
for (int m=0; m<M; m++) {
for (int n=0; n<N; n++) {
if (n==0 && m==5) {
当你实际上只对m
和n
的单个值做任何事情时,为什么要循环?这里的循环完全没用;你可以通过设置n = 0
和m = 5
来获得相同的效果。
temp = new int[3,i+N,i+N+1,i+1];
不管你认为它是做什么的,它不是这样做的。这相当于temp = new int[i+1];
。[]
表达式的其余部分不起作用。
也就是说,不应该在程序中使用new
来创建数组。使用std::vector
;
unsigned ArraySize = sizeof(temp) / sizeof(int);
这不起作用。当您动态分配一个数组时,您有责任跟踪其中有多少个元素。给定一个指针指向一个动态分配的数组(如这里的temp
),无法确定数组中元素的数量。
你所拥有的相当于sizeof(int*) / sizeof(int)
,它不会做你所期望的。
id.insert(id.begin(),temp[0], temp[ArraySize]);
std::vector::insert
接受一系列迭代器:您已经为它提供了两个值。假设您想使用temp
,它指向动态分配的数组的初始元素,而temp + i + 1
,它指向数组末尾的后面。也就是说,由于您没有设置数组中元素的值,因此您正在复制未初始化的内存,这可能不是您想要做的。
select_p[i].push_back(id);
select_p[i]
是std::vector<int>
。std::vector<int>::push_back()
接受附加到序列的单个int
。你大概是想用赋值把id
赋值给select_p[i]
。
如果你想学习c++编程,你应该找一本很好的c++入门书。我很遗憾地说,你的计划毫无意义。
相关文章:
- 我应该为地图使用哪种数据结构?(C++)
- C++ - 将数据插入到地图循环的地图中
- 标准地图如何知道使用标准字符串的数据作为键
- C++,如何从文件中读取数据并插入容器:地图
- 如何传递私有地图和输入数据
- 使用什么数据结构来存储基于游戏对象的二维单元地图?
- 从文件中读取数据并插入到地图C++中
- 将数据存储到地图
- 将数据读入地图时出现问题
- 地图数据结构在 Main 中不显示保存的条目.cpp
- 合成地图:从另一个地图获取数据
- 了解如何使用SFML函数将数据添加到地图中
- 优化地图数据结构的地图
- 使用地图对大数据进行计数
- 有没有办法从点云和深度数据构建和存储3D地图
- C++中的地图数据结构是什么
- 访问地图数据结构中的结构元素
- 使用提升绑定输出地图数据
- 返回的本地地图数据'Lucky'有效的指针数据?
- 地图数据结构的Multimap