本文总结了vector的insert和resize的用法
一、insert
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
insert() 函数有以下三种用法:
1.在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
2.在指定位置loc前插入num个值为val的元素
3.在指定位置loc前插入区间[start, end)的所有元素
举例:
//创建一个vector,置入字母表的前十个字符
vector <char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
//插入四个C到vector中
vector <char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );
//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
cout < < *theIterator;
输出的结果为:
CCCCABCDEFGHIJ
二、resize和reserve 转自http://blog.csdn.net/jackywgw/article/details/6248342
首先必须弄清楚两个概念:
1.capacity
指容器在分配新的存储空间之前能存储的元素总数。
2. size
指当前容器所存储的元素个数
在弄清这两个概念以后,很容易懂resize和reserve的区别
1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。
resize既分配了空间,也创建了对象。
2).reserve只修改capacity大小,不修改size大小,resize既修改capacity大小,也修改size大小。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> vec;
cout << "initilize size is: " << vec.size() << endl;
cout << "initilize capacity is :" << vec.capacity() << endl;
vec.reserve(100);
cout << "vec size is: " << vec.size() << endl;
cout << "vec capacity is :" << vec.capacity() << endl;
vector <int>vec1;
vec1.resize(200);
cout << "vec1 size is :" << vec1.size() << endl;
cout << "vec1 capacity is:" << vec1.capacity() << endl;
system("pause");
return 0;
}
3).两者的形参个数不一样。
resize带两个参数,一个表示容器大小,一个表示初始值(默认为0)
reserve只带一个参数,表示容器预留的大小。