type
status
date
slug
summary
tags
category
icon
password
public, private, protected
左值、右值、左值引用、右值引用
C++容器自动排序
std::map
在C++中,如果你想要键值对按照键自动排序,可以使用
std::map
。std::map
是一个关联容器,它会根据键的顺序对元素进行排序,并且键是唯一的输出:
1: One
2: Two
3: Three
std::set+std::pair
如果你想要键值对按照键自动排序,但又不需要键和值分开存储,可以使用
std::set
结合std::pair
输出:
1: One
2: Two
3: Three
在这个lab中,这种存储方式是特别好的,因为set会自动排序和去重
std::set
结合std::pair
可以自动去重std::set
是一个关联容器,它保证其中的元素是唯一的,并且按照某种排序规则进行排序- 当你将
std::pair
作为std::set
的元素类型时,std::set
会根据std::pair
中的默认比较方式来判断两个std::pair
是否相等
- 默认情况下,
std::pair
的比较操作会逐个比较其成员 - 只有当两个
std::pair
的第一个元素和第二个元素都相等时,它们才被认为是相等的 - 因此,如果你将一对具有相同第一个和第二个元素的
std::pair
插入到std::set
中,std::set
会自动去除其中一个,确保容器中没有重复的std::pair
。
注意set的迭代器end()
在C++的
std::set
中,end()
迭代器指向的是集合中最后一个元素的后一个位置,而不是指向最后一个元素本身。因此,end()
迭代器与集合的最后一个元素并不等价之前直接使用end()时,发生元素乱码,因为那个不是元素,而是元素的位置
- Author:orangec
- URL:orange’s blog | welcome to my blog (clovy.top)/29e511532560492c811bff294a92aa7a
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!