我创建了一个名为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;
}
Run Code Online (Sandbox Code Playgroud)
for (int m=0; m<M; m++) {
for (int n=0; n<N; n++) {
if (n==0 && m==5) {
Run Code Online (Sandbox Code Playgroud)
你为什么要循环时,你实际上只为一对的值做任何事情m和n?这里的循环完全无用; 只需设置n = 0和即可获得相同的效果m = 5.
temp = new int[3,i+N,i+N+1,i+1];
Run Code Online (Sandbox Code Playgroud)
无论你怎么想,这都不是它的作用.这相当于temp = new int[i+1];.内部表达的其余部分[]没有任何效果.
也就是说,您不应该使用new在程序中创建数组.使用std::vector; 它更容易正确使用.
unsigned ArraySize = sizeof(temp) / sizeof(int);
Run Code Online (Sandbox Code Playgroud)
这不起作用.动态分配数组时,您负责跟踪数组中的元素数量.给定一个指向动态分配数组的指针(如此temp处),无法确定数组中的元素数.
你拥有的东西相当于sizeof(int*) / sizeof(int),这不符合你的期望.
id.insert(id.begin(),temp[0], temp[ArraySize]);
Run Code Online (Sandbox Code Playgroud)
std::vector::insert获取一系列迭代器:您为它提供了两个值.大概你想要使用temp,它指向动态分配的数组的初始元素,并temp + i + 1指出一个超过数组末尾的元素.也就是说,由于您没有设置数组中元素的值,因此您正在复制未初始化的内存,这可能不是您的意思.
select_p[i].push_back(id);
Run Code Online (Sandbox Code Playgroud)
select_p[i]是一个std::vector<int>. std::vector<int>::push_back()采用int附加到序列的单个.想必你刚才的意思是使用赋值分配id给select_p[i].
如果你想学习用C++编程,你应该得到一本很好的C++入门书.我很遗憾地说你的程序是荒谬的.
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |