#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char** argv)
{
vector<int> ivec;
//想vector尾部插入元素,返回void
ivec.push_back(1);
ivec.push_back(11);
ivec.push_back(12);
//得到首元素和尾元素
printf("front: %d, back: %d\n", ivec.front(), ivec.back());
//从尾部弹出元素,返回void
ivec.pop_back();
//在pos处插入元素,返回指向插入元素的迭代器
vector<int>::iterator iter = ivec.insert(ivec.begin(), 2);
printf("%d\n", *iter);
//在ivec开始位置插入2个3,返回插入的第一个元素的迭代器
iter = ivec.insert(ivec.begin(), 2, 3);
printf("%d\n", *iter);
//在ivec开始位置插入initializer_list,返回插入的第一个元素的迭代器
iter = ivec.insert(ivec.begin(), { 1, 2, 3 });
printf("%d\n", *iter);
//在ivec开始位置插入ivec.begin()到ivec.end()之间的元素,返回插入的第一个元素
iter = ivec.insert(ivec.begin(), ivec.begin(), ivec.end());
printf("%d\n", *iter);
iter = ivec.begin();
for (; iter != ivec.end(); ++iter)
{
printf("%d ", *iter);
}
printf("\n");
//删除指定位置的元素,返回下一个元素的迭代器
iter = ivec.erase(ivec.begin());
printf("%d\n", *iter);
//删除指定区间的元素,返回下一个元素的迭代器
iter = ivec.begin();
iter = ivec.erase(iter, ++iter);
//iter = ivec.erase(iter, iter++); //这样会出错
printf("%d\n", *iter);
//在指定区间内查找指定元素,返回指向找到的元素的迭代器,没找到元素则返回尾迭代器(end())
iter = find(ivec.begin(), ivec.end(), 3);
if (iter != ivec.end())
printf("%d\n", *++iter);
else
printf("end\n");
iter = find(ivec.begin(), ivec.end(), -1);
if (iter != ivec.end())
printf("%d\n", *++iter);
else
printf("end\n");
//排序
sort(ivec.begin(), ivec.end());
iter = ivec.begin();
for (; iter != ivec.end(); ++iter)
{
printf("%d ", *iter);
}
printf("\n");
//判断vector是否为空
printf("empty(): %d\n", ivec.empty());
//判断vector中含有元素数量
printf("size(): %d\n", ivec.size());
//理论上vector可存放的最多的元素数量,与寻址有关
printf("max_size(): %d\n", ivec.max_size());
//vector的容量大小
printf("capacity(): %d\n", ivec.capacity());
//返回指定位置的元素,使用超过元素数量的位置会引发错误
printf("at(): %d\n", ivec.at(3));
//resize会使vector中的元素保持在num个,resize的参数就是num,capacity并不会变
//ivec.resize(2);
//printf("size(): %d\n", ivec.size());
//printf("capacity(): %d\n", ivec.capacity());
vector<int> jvec;
//把vector中原来的元素清空,往vec中添加3个10
jvec.assign(3, 10);
iter = jvec.begin();
for (; iter != jvec.end(); ++iter)
{
printf("%d ", *iter);
}
printf("\n");
jvec.assign(ivec.begin(), ivec.end());
iter = jvec.begin();
for (; iter != jvec.end(); ++iter)
{
printf("%d ", *iter);
}
printf("\n");
getchar();
return 0;
}
运行结果如下:
front: 1, back: 12
2
3
1
1
1 2 3 3 3 2 1 11 1 2 3 3 3 2 1 11
2
3
3
end
1 1 1 2 2 2 2 3 3 3 3 3 3 11 11
empty(): 0
size(): 15
max_size(): 1073741823
capacity(): 16
at(): 2
10 10 10
1 1 1 2 2 2 2 3 3 3 3 3 3 11 11