C++STL容器的共通操作

共通操作

ContType c //默认构造函数,建立一个未含任何元素的空容器
ContType c(c2) //复制构造函数,建立一个新容器成为c2的拷贝(复制所有元素)
ContType c = c2 //复制构造函数,建立一个新容器成为c2的拷贝(复制所有元素)
ContType c(rv) //Move构造函数,建立一个新容器,取右值rv的内容为初值,不适用于array<>
ContType c = rv ///Move构造函数,建立一个新容器,取右值rv的内容为初值,不适用于
ContType c(beg,end) //建立一个容器,以[beg,end)区间内的所有元素拷贝为初值
ContType c(initlist) //建立一个容器,以初值列initlist的拷贝为初值
ContType c = initlist //建立一个容器,以初值列initlist的拷贝为初值
c.~ContType() //删除所有元素,释放内存
c.empty()//判断容器是否为空
c.size()//返回容器中的元素数量 不适用于forward_list<>
c.max_szie()//返回容器最大可能数量
c1 == c2 //判断c1是否等于c2
c1 != c2//判断c1是否不等于c2
c1 < c2 //判断c1是否小于c2 不适用于unordered容器
c1 > c2 //判断c1是否大于c2 不适用于unordered容器
c1 <= c2 //判断c1是否小于等于c2 不适用于unordered容器
c1 >= c2 //判断c1是否大于等于c2 不适用于unordered容器
c = c2 //将c2所有元素赋值给c
c = rv //将右值rv以移动赋值的方式赋予c,不适用于array
c = initlist //将初值列initlist中的所有元素赋值给c
c1.swap(c2) //置换c1和c2
swap(c1,c2)//同上 是全局函数
c.begin() //返回一个迭代器,指向第一个元素
c.end() //返回一个迭代器,指向最末元素的下一个位置
c.cbegin() //返回一个const 迭代器,指向第一个元素
c.cend() //返回一个const 迭代器,指向第一个元素
c.clear() //移除所有元素,令容器为空,不适用于array

初始化

指明初值初始化:

	const vector<int>v1 = { 1,2,3,4,5,6,7,8 };
	const vector<int>v2{ 1,2,3,54,56,7,4 };

对常量容器的初始化特别有用

以另一容器的元素被初值,初始化:

	list<int>l;
	vector<float>c(l.begin(), l.end());
	list<string>n;
	vector<string>c(make_move_iterator(l.begin()), make_move_iterator(l.end()));
	int carray[]{ 2,3,54,6,6 };
	set<int>c(begin(carray), end(carray));

以标准输入设备完成初始化动作:

	deque<int>c{ std::istream_iterator<int>(std::cin),istream_iterator<int>() };

赋值和Swap()

C++11起,可以使用移动赋值语义,如果赋值后的右侧容器内容不再被使用,应该使用移动赋值语义:

	vector<int>v1;
	vector<int>v2;
	v2 = move(v1);

C++98起,所有容器都提供成员函数swap()

元素访问

所有容器都提供迭代器接口,支持基于范围的for循环,C++11开始,最容易访问所有元素的办法如下:

	for (const auto & elem : coll)
	{
		std::cout << elem << ' ';
	}

如果想要修改元素,可以这样:

	for (auto & elem : coll)
	{
		elem = ...;
	}

还可以这样:

	for (auto pos = coll.cbegin(); pos != coll.cend(); ++pos)
	{
		cout << *pos << endl;
	}

容器提供的类型:

size_type //表现容器大小的无正负号整数类型
difference_type //带正负号的差距值的类型
value_type //元素的类型
reference //元素的引用的类型
const_reference //常量元素的引用的类型
iterator //迭代器类型
const_iterator //指向只读元素的迭代器的类型
pointer//指向元素的指针的类型
const_pointer//指向只读元素的指针的类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值