小甲鱼-C++快速入门笔记(48)之容器和算法

容器:

能容纳两个或更多个值的数据结构通常称为容器(container),因此数组是c++唯一直接支持的容器,但数组并不适合用来解决所有的问题.

而之前介绍过的基于模板的Stack类就是一种新容器.在C++标准库里有许多现成的容器.解决一个问题,找到最合适的容器只是编程工作的一部分.还需要一些适当的函数(算法)来处理这个容器里的数据才能实现最优效率.

向量容器

数组这种数据结构最大的先天不足就是它受限于一个固定的长度,c++标准库提供的向量(vector)类型从根本上解决了数组先天不足的问题,就像创建各种不同类型的数组一样,我们也可以创建各种不同类型的向量.

std::vector<type> vectorName;

我们用不着对一个向量能容纳多少个元素做出限定,因为向量可以动态地随着你往它里面添加元素而无限增大(前提是有足够可用的内存),然后你还可以用它的size()方法查知某给定向量的当前长度(它当前包含的元素个数),定义一个向量后,我们可以用push_back()方法往它里边添加东西.我们还可以用访问数组元素的语法来访问某给定向量里的各个元素.

#include <iostream>
#include <string>
#include <vector>

int main()
{
	std::vector<std::string> name;

	name.push_back("小甲鱼");
	name.push_back("小鱿鱼");

	for(int i=0; i<name.size(); i++)
	{
		std::cout << name[i] << "\n";
	}

	return 0;
}

拓展知识:

数组与vector的异同点

1、相同点

(1)都采用顺序存储的方式,可以存储任何类型的元素;

(2)在访问元素时,二者都是既可以通过下标访问,又可以通过迭代器来访问,对于迭代器访问,C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器定义了一种迭代器类型,而只用少数容器支持下标操作访问容器元素。

2、不同点

(1)是否动态分配空间:数组是分配了固定长的空间,不可存储多余定义长度的元素。而vector的优越性在于,可以动态分配空间,vector长度不固定,可以任意增加,避免内存空间的浪费。

(2)vector可以通过size()函数来获取当前容器长度,而数组长度在定义的时候就已经确定。

(3)vector可以在末尾通过push_back()加入元素,而数组不可以在超出定义长度之外的部分加入元素。

vector的常见用法

1.push_back 在数组的最后添加一个数据 
 
2.pop_back 去掉数组的最后一个数据 
 
3.begin 得到数组头的指针 
 
4.end 得到数组的最后一个单元+1的指针 
 
5.size 当前使用数据的大小 
 
6.capacity 当前vector分配的大小 
 
7.erase 删除指针指向的数据项 
 
8.clear 清空当前的vector 
 
9.empty 判断vector是否为空 
 
10.sort(v.begin(),v.end()) 从小到大排序, sort 需要头文件 #include <algorithm>
 
11.reverse(v.begin(),v.end())  从大到小排序

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值