#include <iostream>
using namespace std;
#include<vector>
int main()
{
/*vector构造函数 初始化4种*/
vector<int> a; //第一种:a为空,什么也没有
vector<int> b(4,100); //第二种:初始化为连续4个100;
//输出为100 100 100 100
vector<int> b1(4); //会默认为4个0
vector<int> c(b.begin(),b.end()); //第三种:参数类型为迭代器这种相当于把b的开始到结束给c,输出为100 100 100 100
//也可以这么写:vector<int> c(b.begin()+2,b.end());输出为100 100
vector<int> d(c); //以另一个对象做初始化,输出跟c一样
int e[]={16,2,77,28};
vector<int> f(e,e+sizeof(e)/sizeof(int));//使用数组做初始化,第一个参数为起始地址,第二个参数为数组末地址
//输出结果跟数组e一样。
return 0;
}
int main ()
{
/******************************************************
*关于vector的
* size()、iterator、begin()、end()函数
* 用法的笔记
*
******************************************************/
vector<int> first(4,10);//初始化为4个10
int i=first.size();//求得first里面共有几个数
cout<<i<<endl;//会输出4
first.begin();//返回值的类型是iterator(迭代器),类似指针
//接收返回值的时候必须定义 vector<int>::iterator ite这种类型
vector<int>::iterator ite=first.begin();//返回的是第一个数
cout<<*ite<<endl;//输出必须加*,否则报错
ite++;//会接着访问下一个数;也可以ite+=2;当然也可以--ite;
first.end();
//基本和first.begin()相同,不过他返回的并不是容器中最后一个数
ite=first.end();//返回的是最后一个数的下一个,一个未知数
ite--;
cout<<*ite<<endl;//输出的是最后一个数
return 0;
}
int main ()
{
/************************************
*关于vector的empty,push_back(),pop_back()
* 介绍
************************************/
vector<int> myvector;
myvector.empty();//判断容器是否是空,若是空的返回true,否则返回false;
bool flag=myvector.empty();
cout<<flag<<endl;//输出1
for(int i=1;i<=10;i++)
myvector.push_back(i);//每次会向容器末尾添加一个数字i
for(int i=0;i<myvector.size();++i)//结果是1~10这10个数字
cout<<myvector[i]<<" ";
myvector.pop_back();//会移除容器中末尾的值,少了一个10
myvector.assign (7,100);//会重新初始化容器,不管以前是啥,都会变成7个10
cout<<endl;
for(int i=0;i<myvector.size();++i)//结果是7个100
cout<<myvector[i]<<" ";
return 0;
}
int main ()
{
/********************************
*关于vector的at(),back(),capacity()
* 介绍
*********************************/
vector<int> myvector (10);//初始化10个0
for (unsigned i=0; i<myvector.size(); i++)
myvector.at(i)=i;//改变容器下标i所对应的值
for (unsigned i=0; i<myvector.size(); i++)//输出0~9
cout << ' ' << myvector.at(i);
cout << '\n';
myvector.back();//返回最后一个元素
cout<<myvector.back()<<endl;//输出9
cout<<myvector.size()<<'\t';//size求的是实际有多少个数
//capacity()计算的是真实的容量,比如申请了5个空间,放了3个数,size()结果为3;capacity()结果为5
cout<<myvector.capacity()<<endl;//容器真实容量
return 0;
}
int main ()
{
/******************************************
//clear():
vector<int> myvector;
for(unsigned i=1;i<=10;i++)
myvector.push_back(i);
myvector.clear();//会清空容器
cout<<myvector.size();//输出0
*******************************************/
/*******************************************
//data()
vector<int> a(1,1);//初始化1个1
int *p=a.data();//返回元素首地址
cout<<*p<<" ";//输出1
*p=2;//容器中的值也会改变
cout<<*p<<" ";//输出2
cout<<*a.begin()<<" ";//输出2
p++;//不再指向容器中值
*p=5;
cout<<*p<<" ";
cout<<a.size()<<" ";//容器大小不变,输出1
***********************************************/
//erase():
/***********************************************
vector<int> a;
for(int i=1;i<=10;i++)
a.push_back(i);
cout<<a.size()<<" ";//输出10
/
//
// a.erase(a.begin()+1);//删除下标为1的元素
// cout<<a.size()<<" ";//输出9
//
///
a.erase(a.begin()+1,a.begin()+6);//从下标1开始删除,一直到下标6截止(下标6不会删除)
cout<<a.size()<<endl;//输出5
******************************************************/
/********************************
//front():
vector<int> a;
for(int i=1;i<=10;i++)
a.push_back(i);
cout<<a.front();//返回第一个元素
**********************************/
/*****************************************************
//get_allocator():
vector<int> a;
int * p;
unsigned int i;
p = a.get_allocator().allocate(5);//申请5个空间给allocator
for (i=0; i<5; i++)
{
a.get_allocator().construct(&p[i],i);//对空间进行赋值
cout<<p[i]<<" ";//结果:0 1 2 3 4
}
for (i=0; i<5; i++) a.get_allocator().destroy(&p[i]);//这个不知道干嘛,感觉是销毁空间
a.get_allocator().deallocate(p,5);//这个是回收空间
***************************************************************/
return 0;
}
int main()
{//
//insert():
// vector<int> a(2,100);
// for(unsigned i=0;i<a.size();i++)//输出结果:100 100
// cout<<a[i]<<" ";
// cout<<endl;
// vector<int>::iterator it;
// it=a.begin();
//
// a.insert(it+1,1);//在it的位置插入1
// //第一个参数为插入的位置必须为迭代器的类型),第二个为插入的值
// for(unsigned i=0;i<a.size();i++)//输出结果:100 1 100
// cout<<a[i]<<" ";
// cout<<endl;
//
// it=a.begin();
// a.insert(it,2,20);//在it的位置插入2个20
// //第一个参数为插入的位置(必须为迭代器的类型),第二个为插入的个数,第三个为插入的值
// for(unsigned i=0;i<a.size();i++)//输出结果:20 20 100 1 100
// cout<<a[i]<<" ";
// cout<<endl;
/
// vector<int> a(2,4),b(3,2);
// vector<int>::iterator it=b.begin();
// b.insert(it+1,a.begin(),a.end()-1);//三个参数类型都是迭代器,把容器a的一段插入到容器b中
// for(unsigned i=0;i<b.size();i++)//输出结果:2 4 4 2 2
// cout<<b[i]<<" ";
///
//
// vector<int> a(2,4);
// int b[3]={9,10,11};
// a.insert(a.begin()+1,b+1,b+3);//把数组的一段地址这一段数据插入
// for(unsigned i=0;i<a.size();i++)//输出结果:4 10 11 4
// cout<<a[i]<<" ";
//
return 0;
}
int main()
{
/**********************************************************
//max_size():返回容器最大可以申请的空间
//size():返回容器中的元素个数
//capacity():返回容器中目前申请的空间个数
vector<int> m;
for (int i=0; i<100; i++)
m.push_back(i);
cout << "size: " << m.size() << "\n";//输出100
cout << "capacity: " << m.capacity() << "\n";//输出128
cout << "max_size: " << m.max_size() << "\n";//输出1073741823
*************************************************************/
/***************************************************
//operator=
vector<int> foo (3,1);
vector<int> bar (5,2);
bar=foo; //容器可以互相赋值
cout<<bar.size()<<endl;//输出:3
for(unsigned i=0;i<bar.size();i++)//输出结果:1 1 1
cout<<bar[i]<<" ";
//operator[]
foo[1]=3;//重载[]方便了访问容器元素,以及修改他的值
**************************************************/
/*********************************************************
//rend(),rbegin()
vector<int> a;
for(int i= 1;i<6;i++)//1 2 3 4 5加入容器
a.push_back(i);
vector<int>::reverse_iterator it,ite;
it=a.rbegin();//返回类型为reverse_iterator,返回位置为最后一个元素
cout<<*it<<endl;//输出:5
it++;//相当于向前移动一个位置,原先在最后一个位置,现在变到倒数第二个
cout<<*it<<endl;//输出:4
ite=a.rend();//返回的是第一个位置的前一个
cout<<*ite<<endl;//输出的是一个随机数
ite--;//到了第一个位置
cout<<*ite<<endl;//输出:1
***********************************************************/
return 0;
}
int main()
{
/***************************************
vector<int> a;
a.reserve(10);//申请10个空间
cout<<a.size()<<endl;//输出:0
cout<<a.capacity()<<endl;//输出:10
****************************************/
vector<int> myvector;
for (int i=1;i<10;i++)
myvector.push_back(i);
/***********************************************************
cout<<myvector.size()<<endl;//输出9
cout<<myvector.capacity()<<endl;//输出16
myvector.resize(5);//重新设置size()大小,不会改变capacity(),如果设置的大小大于capacity(),则会改变capacity()
cout<<myvector.size()<<endl;//输出:5
cout<<myvector.capacity()<<endl;//输出:16
cout<<"myvector[8]="<<myvector[8]<<endl;//输出:9,说明其他元素值还在
*************************************************************/
myvector.resize(10,100);//改变size大小,若size变小,100没有意义,若变大,把多出来的空间用100填进去
myvector.resize(13);//size若大于原先的,用0初始化元素
cout<<myvector.capacity()<<endl;//输出:16
//输出:1 2 3 4 5 6 7 8 9 100 0 0 0
cout << ' ' << myvector[i];
cout << '\n';
return 0;
}
int main()
{
//swap():
vector<int> foo (3,100); // 初始化3个 100
vector<int> bar (5,200); // 初始化5个 200
foo.swap(bar);//把容器互换
for (unsigned i=0; i<foo.size(); i++)
//输出:200 200 200 200 200
cout << foo[i]<<" ";
cout << '\n';
for (unsigned i=0; i<bar.size(); i++)
//输出:100 100 100
cout << bar[i]<< ' ' ;
cout << '\n';
return 0;
}
vector相关的学习整理
最新推荐文章于 2022-07-17 20:01:40 发布