谁能帮我解决如下的c++问题啊 把vector<int> 中的数据放到int 数组中的时候遇上的

如题所述

复制数据的那段代码有问题:
while (pa!= pa + vec.size())
{
*pa = vec[i];
pa++;
}
pa != pa + vec.size()这个条件是永远成立的,这是个死循环。pa会一直加,所以很快你就内存访问越界了。
同样原因,最后的delete[] pa,因为pa已经越界了,所以你这个时候也是内存非法操作。
至于复制,只要在循环里加一个i++就行了。
程序修改如下:
int main(void)
{
int integer;
vector<int> vec;

while (cin>> integer)
{
vec.push_back(integer);
}

int* pa = new int[vec.size()];
int* pTemp = pa;
vector<int>::size_type i = 0;

while (pTemp != pa + vec.size())
{
*pTemp = vec[i];
pTemp++;
i++;
}

pTemp = pa;
while (pTemp != pa + vec.size())
{
cout<< *pTemp << " ";
pTemp++;
}

delete[] pa;

system("pause");
}
另外楼主以后发问题的时候,请直接贴代码。要不然我还得把你的代码敲进去。
温馨提示:内容为网友见解,仅供参考
无其他回答

关于C++中vector< vector<int> >的含义.
个人理解,这个vector<int>申请的空间是动态的。在你定义vector的时候系统并不知道申请了多大的空间。属于动态申请空间就例如 int *a;a=(int *)malloc(n*sizeof(int));一样,当你调用新的输入的时候(直接输入也应该被重载了的)会分配新的空间达到一个动态调整空间大小的做用。而对于2维向量,的...

在C++程序中,如何把多个vector中的内容放到一个vector中?
vector 是要求其内容类型完全一致的,如果所说的多个vector是同一类型,当然是可以的,可以声明如下的嵌套vector。vector< vector<int> > 如果多个vector不为同一类型,也许只能把多个vector的指针放进去了。所以单个和多个存放并没有多大的区别。[补充]把一个vector放入另一个vector当中 大致有一下几种方...

C++中vector<int>a,b(n,0)什么意思
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.用法:1.文件包含:首先在程序开头处加上include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std;2.变量声...

C++中vector使用不当出现的错误
vector内部有一个指向分配了的内存的指针 你copy过去造成多个vector指向堆上同一块内存 这样在析构的时候就会对同一块内存释放两次 出错是在所难免的 STL容器的使用原则之一就是:不要使用CopyMemory,memcpy之类的函数来作无差别拷贝,毕竟容器不是单纯的C结构体 ...

std::vector<int>()代表什么含义?
std::vector<int>()是C++中的一个表达式,它表示创建了一个空的、元素类型为int的std::vector对象。std::vector是标准库中的一个容器,可以存储多个元素,并提供了方便的操作和访问接口。在这个表达式中,通过()``调用了std::vector的默认构造函数,创建了一个空的std::vector<int>`对象。你可以...

c++ vector<vector<int>>b(a[0].size(),vector<int>(a.size())) 什么...
vector<vector<int>>b实例化一个名为b的vector。这个vector当中存得是一系列的vector<int>。实例化的同时,在b里面放入一些默认值。总共放入a[0].size()个默认值,默认值的内容是vector<int>(a.size()),即一个长度为a.size(),里面值都填充为0的vector<int>。可以把b想象成一个表,它有a[0...

C++ vector<vector<int>> 如何初始化
vector 是个模板 在调用的时候,必须按照模板的格式写:vector<int> arr (初始个数,赋值);vector<int> arr(5,0);扩张时resize即可。

在c++中的书上看到vector<vector<vecotr<int>>>,不知道是什么意思,哪...
vector是和list一样的容器,vertor<int>是指一个int型对象的容器,里面保存的都是int型的对象,而vector<vector<int>>是指一个保存了容器的容器,相当于容器嵌套,这样应该就能明白了吧

c++中vector和数组中同类型数据是如何互换的?
很简单。vector在内部是连续存储的。如果数组大小相同的话,从vector->数组 你先得到vector[0]的地址,有的Vector实现有data(),也可以,然后用memcpy拷贝size()*sizeof(int)到数组中即可。从数组到vector.利用vector的构造函数或者是assign成员函数构造即可。参数是数组的起始地址和最后一个其地址+_...

C++基础问题 vector复制给数组
\/\/pt[ix]和pt++一起用导致的错误,应用另一个指针保存首地址 include <iostream> include <vector> using namespace std;\/\/ 编写程序把int 型vector 复制给int 型数组。int main(){ int word;vector<int> num;while(cin >> word){ num.push_back(word);}int len = num.size();int *pt ...

相似回答