您的位置:首页 > 其它

STL容器:vector

2017-05-07 19:17 260 查看

基础

尾部开口,因此在其尾部进行数据的输入输出操作效率最高。

尾部输入成员函数push_back(),尾部删除成员函数pop_back()

常用构造函数见如下程序:

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> v1;//构造一个空的容器
for (int i = 0; i < 20; i++)
{
v1.push_back(i);
//vector如何实现内存的动态增长,会预先创建一块内存区,当用完后再重新申请
cout << "v1.size():" << v1.size() << "  v1.capacity()" << v1.capacity()<<endl;//size()元素的个数,capacity() vector的总长度,包括没被初始化的元素
}
vector<int> v2(10);//构造一个长度为10的容器
vector<int> v3(10,2);//构造一个长度为10的容器,并用2初始化它
vector<int> v4(v1);//构造一个容器v4,并用v1初始化它
vector<int> v5(v1.begin()+1, v1.begin()+11);//构造一个容器v5并用v1的部分元素初始化它
return 0;
}


数据的访问

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> v1;
for (int i = 0; i < 5; i++)
{
v1.push_back(i);
}
cout << "使用下标和at()读取数据" << endl;
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " " << v1.at(i)<<endl;
}
cout << "使用下标和at()来写入数据" << endl;
v1[0] = 10; v1.at(1) = 11;
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " " << v1.at(i) << endl;
}
//使用迭代器来插入数据
vector<int>::iterator iter;
iter = v1.begin();
v1.insert(iter + 1, 0);
cout << "使用迭代器来遍历输出数据" << endl;
for (iter = v1.begin(); iter!= v1.end(); iter++)
{
cout << *iter << endl;
}
return 0;
}


其它的常用函数:

clear() 删除容器中所有元素

erase(pos) 删除pos指定位置的元素

erase(begin,end) 删除begin到end-1间的所有元素

insert(pos,elem) 在pos处插入elem,并返回新元素的位置

insert(pos,n,elem) 在pos处插入n个elem

insert(pos,begin,end) 把begin到end-1的所有元素拷贝到pos处

resize(n) 将元素个数改为n

resize(n,elem) 将元素个数改为n,如果size增加,把增加的都初始化为elem

c++11为vertor增加的新内容:

使用{}来初始化和赋值

简单地使用for来遍历元素并进行简单操作

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> v1= {1,2,3,4,5};
for (auto &i : v1){
i = i*i;
}
for (auto &i : v1){
cout << i << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: