我是靠谱客的博主 现实吐司,最近开发中收集的这篇文章主要介绍c++容器操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文将介绍c++中所有容器共同的部分

1.类型别名:

(1).iterator表示此容器的迭代器类型

(2).const_iterator可以读元素但是不能修改元素的迭代器类型

(3).size_type无符号整数类型,足够储存这种容器类型最大可能的容器大小

(4).difference_type带符号整型数,足够保存两个迭代器之间的距离

(5).value_type元素类型

(6).reference元素的左值类型,与value_type&含义相同

(7).const_reference元素的const左值类型,与const value_type&含义相同

(8).以上是类内的类型别名,(在类外)使用时需要作用域运算符

vector<int>::difference_type count;
list<string>::value_type ss;

2.构造函数

vector<int>a1;
//默认构造函数,空容器
vector<int>a2(a1);
//构造a的拷贝aa
vector<int>a3(b, e);
//构造aaa,将迭代器b、e指定的范围内的元素拷贝到aaa,array不支持
vector<int>a4{ 1,4 };
//列表初始化

3.大小

vector<int>a;
a.size();
//forward_list不支持
a.max_size();
a.empty();

4.添加、删除(array不支持)

vector<int>a;
a.insert();
//插入元素
a.emplace();
//插入元素
a.erase();
//删除指定元素
a.clear();
//删除所有元素

5.关系运算符

(1).所有容器都支持==、!=

(2).无序关联容器不支持关系运算符,其他都可>、>=、<、<=

6.迭代器

(1).迭代器类型类似于指针类型,需要解引用获得对象的引用

(2).可以根据是否begin==end历遍

vector<pair<int, int>>a;
a.begin();
a.end();
a.cbegin();
//c++11引入
a.cend();
a.begin()->first;

7.反向容器的额外成员(forward_list不支持)

(1).reverse_iterator按逆序寻址元素的迭代器

(2).const_reverse_iterator不能修改元素的逆序迭代器

(3).对一个反向迭代器来说,各种操作的含义发生颠倒,如++操作会得到上一个元素

vector<int>a;
a.rbegin();
//返回指向a的尾元素的迭代器
a.rend();
//返回指向a的首元素之前位置的迭代器
a.crbegin();
//只读
a.crend();

8.赋值和swap

(1).除array外,对于swap的操作会很快:元素本身并未交换,只是交换了两个容器的内部数据结构,优于直接赋值

vector<int> a{ 1,2,3 }, b = { 8,9,4 };
a = b;
swap(a, b);
a.swap(b);
//assign不适用于array和关联容器
a.assign(b.begin(), b.end());
//迭代器
a.assign(5, 7);
//替换为5个值为7的元素

最后

以上就是现实吐司为你收集整理的c++容器操作的全部内容,希望文章能够帮你解决c++容器操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部