type
status
date
slug
summary
tags
category
icon
password

public, private, protected

左值、右值、左值引用、右值引用

C++容器自动排序

std::map

在C++中,如果你想要键值对按照键自动排序,可以使用std::mapstd::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()时,发生元素乱码,因为那个不是元素,而是元素的位置
CS144—Lab2gns3的配置
  • Giscus