vector

1.容器的类别

容器分为顺序容器和关联容器。而关联容器里面分为有序和无序的。如图一所示。

图一 容器的类别

1.1 顺序容器

顺序容器提供了快速方便访问元素的能力,因为元素访问顺序不依赖元素的值,而是其在容器的位置。
Array:固定大小数组。支持快速随机访问。不能添加或删除元素。
Vector:可变大小数组。支持快速随机访问,在尾部之外的位置插入和删除位置可能很慢。(需要移动插入/删除位置之后的所有元素)
Deque:双端队列。支持快速随机访问。在头尾位置插入/删除操作速度都很快。
List:双向链表。只支持双向顺序访问。在list中任意位置插入/删除操作速度都很快。
Forward-List:单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作都很快。
tips:
①通常,使用vector是最好的选择。
②如果不确定应该使用哪种容器,那么可以在程序中只使用vector和list公共的操作:使用迭代器,不使用下标操作,避免随机访问。这样,在必要时选择使用vector或list都很方便。

1.2关联容器

关联容器支持高效的关键字查找和访问

1.2.1 有序关联容器

Set:关键字的简单集合。比如定义一个名为checks的set来保存那些是否来贷款的人的名字。在接受一个新的业务,可以直接通过check来检查顾客是否在里面。
Map:又称关联数组,是关键字-值的集合。比如人名作为关键字,电话号码作为值。

1.2.2 无序关联容器

Unordered_Set:用哈希函数组织的set。
Unordered_Map:用哈希函数组织的map。

2.向量(vector)

2.1 头文件using声明

要想使用vector,必须包含头文件以及using声明。

#include<vector>
using std::vector;

2.2 vector、string、Array

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> v{1,2,3,4,5 };//定义及初始化
	cout << "元素的个数: " << v.size()<<endl;//vector无length
	cout << "第一个元素是: " << v[0] << endl;


	for (auto i : v)           //自动推导i值
	{
		cout << i << " ";
		cout<< endl;
	}
}

元素的个数: 5
第一个元素是: 1
1 2 3 4 5
在这里插入图片描述
vector下标是从0开始,size是元素个数,或者叫长度。

vector中无length()
string中有size()和length()

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string s = "hello";
	cout << "字符的个数: " << s.size() << endl;
	cout << "序列的长度: " << s.length() << endl;   //含义不一样,但是返回的值一样
	cout << "第一个字符是 " << s[0] << endl;
	cout << " " << s << endl;
}

字符的个数: 5
序列的长度: 5
第一个字符是 h
hello
字符串下标也是从0开始的

2.3 vector常见接口

在这里插入图片描述

资料来自网络和书本,本人只是梳理总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值