vector容器中插入值及修改值的有关问题
vector容器中插入值及修改值的问题?
第一个疑问:
我想在容器v中插入三个值,即要输入三个值分别为11,22,33,但是当我输入22回车后程序就崩溃了,不知道原因,为什么会这样呢?
第二个疑问:
我定义的容器v,初始化了3个元素,其初始化值为0,现在了我想改变这三个元素的初始化值,如分别为44,55,66, 我该怎么做呢,即如何修改已经存在元素的值呢?
------解决方案--------------------
1,迭代器会失效
2,直接调用operator []赋值就行了
------解决方案--------------------
1.你插入数据后,相当于原来的指定的数据迭代器次序都变了,就失效没用了,当然这是对你插入之后的元素,比如你插入迭代器位置之前的,次序和数据仍然都对,迭代器还是管用的。
2.直接按数据那样赋值即可修改数据了。
------解决方案--------------------
iter = v.insert(iter, num);
iter--;
应该可以。
------解决方案--------------------
迭代器再插入后就会失效.插入的时候先用迭代器找到位置,然后直接用insert在需要的位置插入即可.
------解决方案--------------------
------解决方案--------------------
insert返回的是插入前当前位置的迭代器。
// 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返回的是插入前当前位置的迭代器。