读书人

(c++)有关于vector的有关问题

发布时间: 2013-11-23 10:52:51 作者: rapoo

(c++)有关于vector的问题
#include <iostream>
#include<vector>
using namespace std;

int main(){
vector<int> ival;
int ia[10]={1,1,2,3,4};
ival.push_back(ia[10]);
ival[0]=0;
for(vector<int>::iterator iter=ival.begin();iter!=ival.end();++iter)
cout<<*iter;
return 0;
}
为什么最后的输出只有0呢?
[解决办法]
for(int i = 0; i < 10; i++)
{
ival.push_back(ia[i]);
}

引用:
Quote: 引用:

ia[10]只是一个元素,属于越界访问,其值取决于当时的堆栈数据,刚好为0而已。

Quote: 引用:

#include <iostream>
#include<vector>
using namespace std;

int main(){
vector<int> ival;
int ia[10]={1,1,2,3,4};
ival.push_back(ia[10]);
ival[0]=0;
for(vector<int>::iterator iter=ival.begin();iter!=ival.end();++iter)
cout<<*iter;
return 0;
}
为什么最后的输出只有0呢?

我要把ia数组里面的元素都读入到ival中应该怎么写呢?

[解决办法]

int main()
{
int ia[10]={1,1,2,3,4};
vector<int> ival(&ia[0], &ia[5]);
ival[0]=0;
for(vector<int>::iterator iter=ival.begin();iter!=ival.end();++iter)
cout<<*iter;
return 0;
}

[解决办法]
引用:
#include <iostream>
#include<vector>
using namespace std;

int main(){
vector<int> ival;
int ia[10]={1,1,2,3,4};
ival.push_back(ia[10]);
ival[0]=0;
for(vector<int>::iterator iter=ival.begin();iter!=ival.end();++iter)
cout<<*iter;
return 0;
}
为什么最后的输出只有0呢?


貌似楼主的本意是要把这个数组所有的数据就放进vector里面,那你应该不是这样做吧?
导入部分应该这样写

for (int i=0;ia[i];i++)
{
ival.push_back(ia[i]);
}

[解决办法]

vector<int> const ival = {0, 1, 2, 3, 4, 10};
for(auto data : ival){
std::cout<<data<<std::endl;
}


读书人网 >C++

热点推荐