C++ unordered_set指针允许修改元素
C++ unordered_set of pointers allows modifying elements
如果这个问题得到了回答,我深表歉意。我确实专门搜索了这个问题,但找不到答案。
unordered_set包含指向用户定义类型的指针,其中一个类型的模因是变量计数。
现在,当我尝试插入一个新对象时 - 特别是指向该对象的指针,我会检查它是否已经存在。如果是,我只是增加该对象的计数。
问:C++如何允许我修改对象,这是我unordered_set的键?
auto iter = mySet.find(w);
if(iter == mySet.end()) {
mySet.insert(w);
}
else { /* found the element. Increment the count. */
(*iter) -> count += 1;
}
上面的代码工作正常且符合预期。第一次插入后,任何后续插入对象的尝试都会导致计数增加。
文档说,unordered_set的任何迭代器都是恒定的,"即使前面没有const_"。有人可以解释一下我错过了什么。
附加信息:我确实定义了相关的哈希和比较函子,它们作为模板参数传递给unordered_set。
最好
创建指针unordered_set
时,存储的键是指针本身,而不是对象的数据。集合将强制指针保持不变,否则需要重新哈希。
顺便说一下,如果您正在对对象的数据进行哈希处理,但存储其指针,则最终可能需要手动重新哈希,如果您更改了哈希函数中的字段。
相关文章:
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- C++ std::vector语言 - 如何修改迭代器指定的元素?
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 如何修改所有文本元素;Visual Studio c++
- C++ 当容器在使用前被破坏/修改时发出警告(通过引用元素或迭代器使用)
- 如何使用初始化列表循环修改元素
- 为什么基于范围的循环不修改容器元素?
- 通过const_cast修改常量 std::vector 的元素<T>
- 修改 std::D efined 行为的元素?
- 从equal_range查询中筛选和修改 boost::multi_index 中的元素
- 如何转换一个类方法以修改另一个类的私有元素?
- 如何使用用户输入正确修改 2D 数组中的字符数组元素?专门用于电影院座位
- Armadillo C :如何使用来自另一个矩阵的多个元素(特别是在立方体结构中)修改矩阵的多个数组元素
- 如何在不知道大小的情况下编写过程来修改动态数组的元素和大小
- 如何修改 Kadane 算法以找出贡献最大总和的子数组元素?
- 如何在不修改现有函数的情况下反转数组中除第一个和最后一个元素之外的所有元素
- 迭代一个巨大的 std::vector of std::vectors 并修改元素
- C++ unordered_set指针允许修改元素
- 当需要修改元素时,另一种类似集合的数据结构是什么?
- 在std::map中修改元素键的最快方法是什么?