Skip to content

Commit 8fd1641

Browse files
authored
第 23 条:考虑用排序的vector替代关联容器
第 23 条:考虑用排序的vector替代关联容器
1 parent 0f90bc7 commit 8fd1641

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

Effective-STL读书笔记.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,3 +584,12 @@ int test_item_22() {
584584
对于 map 和 multimap 尤其简单,因为如果有程序试图改变这些容器中的键,它将不能通过编译。这是因为,对于一个 map<K, V>或 multimap<K, V> 类型的对象,其中的元素类型是 pair<const K, V>。因为键的类型是 const K,所以它不能被修改。(如果利用 const_cast,你或许可以修改它。)
585585

586586
对于 set<T> 或 multiset<T> 类型的对象,容器中元素的类型是 T,而不是 const T。注:不通过强制类型转换并不能改变 set 或 multiset 中的元素。
587+
588+
## 第 23 条:考虑用排序的vector替代关联容器
589+
590+
这个建议的前提是:
591+
- 创建一个新的数据结构,并插入大量元素,在这个阶段,几乎所有的操作都是插入和删除操作。很少或几乎没有查找操作。
592+
- 查找阶段:查询该数据结构找到特点的信息,在这个阶段,几乎所有的操作都是查找很少或几乎没有删除。
593+
- 重组阶段:改变数据结构的内容。
594+
595+
这种方式使用其数据结构的应用程序来说,排序的 vector 可能比管理容器提供了更好的性能。

0 commit comments

Comments
 (0)