#include<iostream>
#include <vector>
using namespace std;
int main(){
unsigned int i;
vector<int> first;
vector<int> second(4,100);
vector<int> third(second.begin(),second.end());
vector<int> forth{
0,1,2,3,4,5,6,7,8,9,0};
int mytins[]={
16,2,22,7,11};
vector<int> fifth(mytins,mytins+sizeof(mytins)/sizeof(int));
cout << "the fifth contains ";
for(auto h:fifth)
cout << h << " ";
cout << endl;
//assign()函数一共包含两个版本第一个支持重复数字的引用版本,第二个支持迭代器版本;
first.assign(7,100);
for(auto h:first)
cout << h << " ";
cout << endl;
first.assign(10,1);
for(auto h:first)
cout << h << " ";
cout << endl;
first.assign(second.begin(),second.end());
for(auto h:first)
cout << h << " ";
cout << endl;
first.assign(second.begin(),second.end());
//at用来作为下标访问
for(size_t i=0;i<forth.size();++i)
cout << forth.at(i) << " ";
cout << endl;
//.back()用于返回当前vector的最后一个元素;
cout << forth.back() << endl;
//.begin() .end()两个迭代器,用于访问vector里面的元素
for(auto It=forth.begin();It!=forth.end();++It)
cout << *It << " ";
cout << endl;
//auto 可以使用vector<int>::iterator It 进行代替;
//capacity() vector里面已经分配的空间的大小,用来衡量里面可以访问多少元素;
cout << "first.capacity(): " << first.capacity() <<"\tfirst.size(): " << (int)first.size() << endl;
cout << "second.capacity(): " << second.capacity() <<"\tsecond.size(): " << second.size() << endl;
cout << "third.capacity(): " << third.capacity() <<"\tthird.size(): " << third.size() << endl;
cout << "forth.capacity(): " << forth.capacity() <<"\tforth.size(): " << forth.size() << endl;
cout << "fifth.capacity(): " << fifth.capacity() <<"\tfifth.size(): " << fifth.size() << endl;
//clear 调用析构函数,将所有元素清0,并且将size置为0,但是分配的空间大小是没有改变的;
first.clear();
cout << first.capacity() << endl;
cout << first.size() << endl;
//.erase()擦出某些函数,一共有两个版本,其中一个是传递位置,另一个是传递范围,两者都必须是迭代器
for(size_t i=0;i<20;++i)
first.push_back(i);
first.erase(first.begin()+2);
for(auto h:first)
cout << h << " ";
cout << endl;
first.erase(first.begin()+2,first.begin()+7);
for(auto h:first)
cout << h << " ";
cout << endl;
//.front()用于返回当前容器的第一个元素;
cout << "first.front(): " << first.front() << endl;
//.get_allocator()用于获得分配容器的适配器,可以使用这个适配器用来获得需要的空间;
int *p;
vector<int> myvector;
//使用指针获得5个元素的分配地址;
p=myvector.get_allocator().allocate(5);
for(auto i=0;i<5;++i)
p[i]=i;
for(auto i=0;i<5;++i)
cout << p[i] << " ";
cout << endl;
//Insert 用于在当前容器里面插入元素,支持三种形式的插入:(位置,元素),(位置,元素数量,元素),(位置,迭代器开始,迭代器结束);
forth.insert(forth.begin()+5,10);
forth.insert(forth.begin()+3,4,5);
forth.insert(forth.begin()+7,first.begin(),first.end());
for(auto h:forth)
cout << h << " ";
cout << endl;
//=用于完成元素的拷贝,并且丢弃原来数组里面的元素
vector<int> vfirst;
first=vfirst;
for(auto h:first)
cout << h << " ";
cout << endl;
for(size_t i=0;i<forth.size();++i)
forth[i]=i*2;
for(size_t i=0;i<forth.size();++i)
cout << forth[i] << " ";
cout << endl;
//.pop.back()用于逐个的删除容器里面的元素;
while(second.empty()){
second.pop_back();
}
//.rebegin() rend()用于从后往前进行迭代器的遍历;
for(auto It=forth.rbegin();It!=forth.rend();++It)
cout << *It << " ";
cout << endl;
//用来主动要求capacity的大小,函数原型void reverse(size_t n);
vector<int> newvector;
newvector.resize(20);
cout << "newvector.capacity: " << newvector.capacity() << endl;
//.resize():一共有三种情况,如果设定的n的值小于当前的数字元素实际大小,那么超过的部分就会被销毁;
//如果n大于当前实际元素的大小,那么容器里面会被填充其他的元素;
//如果n大于capacity的大小,那么容器会自动调整capacity的大小;
vector<int> mynewvector;
for(size_t i=0;i<10;i++)
mynewvector.push_back(i);
mynewvector.resize(5);
mynewvector.resize(8,100);
for(auto my:mynewvector)
cout << my << " ";
cout << endl;
//.shrink_to_fit:请求减少capacity适应size的大小;
//这个过程使可以自动进行优化的,有可能进行空间的重新分配,但是不会原始的数据;
vector<int> mynewvector1(100);
cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
mynewvector1.resize(10);
cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
myvector.shrink_to_fit();
cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
//size:用来衡量容器里面实际元素的数量
cout << "myvector.size(): " << myvector.size() << endl;
//.swap()用来交换两个容器里面的元素
second.swap(fifth);
cout << "second contains: " ;
for(auto nh:second)
cout << nh << " ";
cout << endl;
cout << "fifth contains: ";
for(auto hh:fifth)
cout << hh << " ";
cout << endl;
}
还没有评论,来说两句吧...