首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector容器中插入值及修改值的有关问题

2013-07-04 
vector容器中插入值及修改值的问题?// test.cpp : Defines the entry point for the console application.

vector容器中插入值及修改值的问题?


// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
#include <string.h>
#pragma warning(disable : 4786)
#include<vector>
#include<algorithm>
using namespace std;

int main(int argc, char* argv[])
{

vector<int> v(3, 0);
vector<int>::iterator iter;
// 打印初始值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << *iter << endl;
}
cout << endl;
int i = 0;
// 插入值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << "请输入:";
int num;
cin >> num;
v.insert(iter, num);
}
// 打印插入后的值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << *iter << endl;
}
cout << endl;

return 0;
}


第一个疑问:
我想在容器v中插入三个值,即要输入三个值分别为11,22,33,但是当我输入22回车后程序就崩溃了,不知道原因,为什么会这样呢?

第二个疑问:
我定义的容器v,初始化了3个元素,其初始化值为0,现在了我想改变这三个元素的初始化值,如分别为44,55,66,  我该怎么做呢,即如何修改已经存在元素的值呢?


[解决办法]
1,迭代器会失效
2,直接调用operator []赋值就行了
[解决办法]
1.你插入数据后,相当于原来的指定的数据迭代器次序都变了,就失效没用了,当然这是对你插入之后的元素,比如你插入迭代器位置之前的,次序和数据仍然都对,迭代器还是管用的。
2.直接按数据那样赋值即可修改数据了。
[解决办法]
iter = v.insert(iter, num);
iter--;
应该可以。
[解决办法]
迭代器再插入后就会失效.插入的时候先用迭代器找到位置,然后直接用insert在需要的位置插入即可.
[解决办法]
int main(int argc, char* argv[])
{

vector<int> v(3, 0);
vector<int>::iterator iter;
// 打印初始值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << *iter << endl;
}
cout << endl;
int i = 0;
// 插入值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << "请输入:";
int num;
cin >> num;
iter = v.insert(iter, num);
iter++;
}
// 打印插入后的值
for (iter = v.begin() ; iter != v.end() ; iter++)
{
cout << *iter << endl;
}
cout << endl;

return 0;
}

[解决办法]
insert返回的是插入前当前位置的迭代器。

热点排行
Bad Request.