c++中set push_back中添加的是key还是value
时间: 2024-03-30 12:36:32 浏览: 159
在C++中,set是一种关联容器,它存储一组唯一的元素,并按照一定的排序规则进行排序。set中只存储key,不存储value。因此,set没有push_back方法,而是使用insert方法来添加元素。insert方法会将元素插入到set中,并按照排序规则进行排序。如果要在set中存储value,可以使用std::pair将key和value组合起来作为一个元素存储。
相关问题
C++从unodered_map中得到int型value值,如何排序大小,他是自动排序大小的吗
在C++中,`unordered_map`本身并不支持直接的排序操作,因为它是一个无序的数据结构,其内部的元素是基于哈希表实现,不是按照插入顺序或者键值大小排列的。如果你想按值排序并保持`unordered_map`的特性,你需要先将其转换为另一种可以排序的数据结构,比如`vector`、`list`或者`set`。
如果你想要创建一个新的有序容器(如`vector<int>`),并且它包含原`unordered_map`中的所有`int`值,你可以这样做:
```cpp
std::unordered_map<KeyType, int> unorderedMap;
// ... 填充map
std::vector<int> sortedValues;
for (const auto& pair : unorderedMap) {
sortedValues.push_back(pair.second);
}
// 使用sort函数对sortedValues进行排序
std::sort(sortedValues.begin(), sortedValues.end());
```
然后你可以根据需要选择升序或降序排列。但是注意,这种方式不会改变原`unordered_map`的结构。
阅读全文