std::pair
需要 #include <utility>
std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。pair实质上是一个结构体,其主要的两个成员变量是first
和second
,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair
函数
一般make_pair
都使用在需要pair
做参数的位置,可以直接调用make_pair生成pair对象。另外pair
可以接受隐式的类型转换,这样可以获得更高的灵活度。
1 | pair <string,double> product1 ("tomatoes",3.25); |
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。
由于pair类型的使用比较繁琐,因为如果要定义多个pair类型的时候,可以使用typedef
简化声明
std::tie
std::tie
是在 <tuple>
头文件中定义的。std::tie
是一个函数模板,用于创建一个元组并将多个变量绑定到该元组的元素上。它通常用于同时获取或设置多个值。
1 |
|
三个整数变量 x、y 和 z,分别初始化为 10、20 和 30。然后,我们使用 std::tie
将这些变量绑定到一个元组中,并使用 std::make_tuple
创建了一个新的元组,其中元素的顺序为 z, x, y。通过将该元组赋值给 std::tie(x, y, z)
,变量 x、y 和 z 的值发生了重新排列。
最后,我们输出变量 x、y 和 z 的值,可以看到它们已经按照元组的顺序进行了重新赋值。这种方式可以方便地交换变量的值或同时获取多个返回值。
std::array
需要include <array>
std::array
仍然是有固定大小的数组,可以随机访问。不像vector那样支持添加或删除元素等改变大小的操作,没有内存重新分配的行为。当定义一个array时,除了指定元素类型,还要指定容器大小。
之所以加入了std::array
,就是为了解决内置数组的老问题,比如无法直接对象赋值,无法直接拷贝等等,同时内置的数组又有很多比较难理解的地方,比如数组名是数组的起始地址等等。
简单地说,std::array
作为固定大小的数组,又拥有vector
的一些特点,比如迭代器访问、获取容量、获得原始指针等高级功能,但它又不会退化成指针给开发人员造成困惑。
1 | std::array<int, 5> a0 = {0, 1, 2, 3, 4}; //正确 |
std::array
不要和数组混合使用。
std::array
提供了[]、at、front、back、data的方式来访问元素。array还提供了迭代器的方式进行元素遍历和访问,比如begin
, end
。以及其它一些函数,比如empty
, size
, fill
,但没有capacity
函数。