STL笔记(いち)

Vector:

    1.可变长的动态数组

     2.需包含头文件#include<vector> (当然,如果用了万能头文件#include<bits/stdc++.h>则可忽略)

 3.支持随机访问迭代器:

  •     根据下标随机访问某个元素,时间复杂度O(1)
  •     在尾部添加速度很快
  •     在中间插入慢

  4.所有STL算法都能对vector操作。

下面是关于vector使用的代码:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void fun(int &n) //配套for_each输出vector容器
{
	cout<<n<<" ";
}
//自己设计比较函数,对元素进行降序排列。
bool cmp(const int &a,const int &b)
{
	if(a!=b)	return a>b;
}
int main(int argc, char const *argv[])
{
	vector<int> v(10); //定义一个vector容器
	vector<int>::iterator i; //vector<int>::iterator i--迭代器定义
	//对vector赋值
	for(int j=0;j<v.size();++j)
		v[j]=1;
	v[0]=3;v[1]=5;v[2]=7;
	v.at(4)=10;
	//输出vector的值
	cout<<"The original vector is:";
	for_each(v.begin(),v.end(),fun);
	//相当于for(vector<int>::iterator i=v.begin();i!=v.end();++i)
	//STL中的功能,便于输(tou)出(lan):)
	cout<<"\n";

	//向vector中插入元素
	v.insert(v.begin(),9); //在v[0]插入9
	v.insert(v.begin()+2,19); //在v[2]插入19
	v.insert(v.end(),29); //在最后一个位置v[10+2+1]插入29
	//输出
	cout<<"The new vector is:";
	for_each(v.begin(),v.end(),fun);
	cout<<endl;

	//删除
	v.erase(v.begin()+1);
	v.erase(v.begin()+2,v.begin()+4);
	cout<<"The Deleted vector is:";
	for_each(v.begin(),v.end(),fun);

	//清空 v
	v.clear();
	cout<<endl<<"Cleared vector-size is:"<<v.size()<<endl;
	cout<<endl;

	//开始排序
	cout<<"sort-vector:"<<endl;
	for (int j = 0; j < 10; ++j)
	{
		v.push_back(9-j);
	}
	cout<<"The original vector is:";
	for_each(v.begin(),v.end(),fun);
	cout<<endl;
	sort(v.begin(),v.end()); //排序,默认升序.
	cout<<"The sorted vector is:";
	for_each(v.begin(),v.end(),fun);
	cout<<endl;
	//将vector逆转
	reverse(v.begin(),v.end());
	cout<<"The reversed vector is:";
	for (i = v.begin(); i != v.end(); ++i)
	{
		cout<<*i<<" ";
	}
	cout<<endl;
	//用自定义的排序规则,按从大到小排序
	sort(v.begin(),v.end(),cmp);
	cout<<"The ownner-sorted original-vector is:";
	for_each(v.begin(),v.end(),fun);
	cout<<endl;

	int a[5]={1,2,3,4,5};  //定义一个数组,并用vector复制
	vector<int> v2(a,a+3); //构造函数并复制 a中的前3个数字
	cout<<"v2为:";
	for_each(v2.begin(),v2.end(),fun);
	return 0;
}

编译结果:


猜你喜欢

转载自blog.csdn.net/qq_41684261/article/details/80551476
今日推荐