16.2.2【vertor容量和大小、插入和删除、数据存取】
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
#include<vector>
/*
3.2.4 vector容量和大小
empty(); //判断容器是否为空
capacity(); //容器的容量
size(); //返回容器中元素的个数
resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
resize(int num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
3.2.5 vector插入和删除
push_back(ele); //尾部插入元素ele
pop_back(); //删除最后一个元素
insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count,ele); //迭代器指向位置pos插入count个元素ele
erase(const_iterator pos); //删除迭代器指向的元素
erase(const_iterator start, const_iterator end); //删除迭代器从start到end之间的元素
clear(); //删除容器中所有元素
3.2.6 vector数据存取
at(int idx); //返回索引idx所指的数据
operator[]; //返回索引idx所指的数据
front(); //返回容器中第一个数据元素
back(); //返回容器中最后一个数据元素
*/
void pv(vector<int> & v)
{
for(vector<int>::iterator it=v.begin(); it!=v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test324()
{
vector<int> v1;
for(int i=0; i<10; i++)
{
v1.push_back(i);
}
pv(v1);
if(v1.empty())
{
cout << "v1 is null" << endl;
}
else
{
cout << "v1 is not null" << endl;
cout << "v1容量:" << v1.capacity() << endl;
cout << "v1当前大小:" << v1.size() << endl;
}
//重新指定大小
//新指定大小比原来大
v1.resize(18); //默认用0填充空余位置
pv(v1);
v1.resize(20, 666); //指定用666填充空余位置
pv(v1);
//新指定大小比原来小
v1.resize(5); //删除多余位置的数据
pv(v1);
}
void test325()
{
vector<int> v1;
v1.push_back(10); //尾插
v1.push_back(20);
v1.push_back(30);
pv(v1);
v1.pop_back(); //尾删
pv(v1);
v1.insert(v1.begin(), 100); //(迭代器,待插入数据)
pv(v1);
v1.insert(v1.begin(), 2, 22); //(迭代器,插入个数,待插入数据)
pv(v1);
v1.erase(v1.begin()); //删除,参数也是迭代器
pv(v1);
v1.erase(v1.begin(), v1.end()); //区间删除
pv(v1); //清空,效果同v1.clear()
}
void test326()
{
vector<int> v1;
for(int i=0; i<10; i++)
{
v1.push_back(i);
}
for(int i=0; i<v1.size(); i++)
{
cout << v1[i] << " ";
}
cout << endl;
for(int i=0; i<v1.size(); i++)
{
cout << v1.at(i) << " ";
}
cout << endl;
cout << "first data:" << v1.front() << endl;
cout << "last data:" << v1.back() << endl;
}
int main()
{
test324();
/*
判断是否为空 --- empty
返回元素个数 --- size
返回容器容量 --- capacity
重新指定大小 --- resize
*/
test325();
/*
尾插 --- push_back
尾删 --- pop_back
插入 --- insert (位置迭代器)
删除 --- erase (位置迭代器)
清空 --- clear
*/
test326();
/*
除了用迭代器获取vector容器中元素,[ ]和at也可以
front返回容器第一个元素
back返回容器最后一个元素
*/
system("pause");
return 0;
}