What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
cs:programming:cpp:cpp_primer:9_containers [2024/12/14 13:02] – [容器相关操作总览] codingharecs:programming:cpp:cpp_primer:9_containers [2024/12/14 13:07] (当前版本) – [顺序容器的特性] codinghare
行 16: 行 16:
   * Deque 支持快速随机访问。添删首尾元素快,中间元素慢   * Deque 支持快速随机访问。添删首尾元素快,中间元素慢
   * Array 是新标准的容器,不支持添删和改变容器大小。相较于 Build-in Aarray 更安全   * Array 是新标准的容器,不支持添删和改变容器大小。相较于 Build-in Aarray 更安全
- +{{ :cs:programming:cpp:cpp_primer:define_init_containers_1.svg?600 |}}
-<html><div align="center"> <img src="/_media/programming/cpp/cpp_primer/containers_overview.svg width="800"> </div> </html> \\ \\+
 <WRAP center round tip 100%> <WRAP center round tip 100%>
 新标准下的 STL 容器比旧版本下的快上许多,在可以使用的地方尽可能的使用。 新标准下的 STL 容器比旧版本下的快上许多,在可以使用的地方尽可能的使用。
行 47: 行 46:
  
 操作的详细分类如下表: 操作的详细分类如下表:
-\\ \\ <html><div align="center"> <img src="/_media/programming/cpp/cpp_primer/container_operations.svg width="700"> </div> </html> +\\ \\ {{ :cs:programming:cpp:cpp_primer:container_operations.svg?600 |}} 
-<html><div align="center"> <img src="/_media/programming/cpp/cpp_primer/define_init_containers_2.svg width="700"> </div> </html> \\ \\+{{ :cs:programming:cpp:cpp_primer:define_init_containers_2.svg?600 |}} \\ \\
 总的来说,**容器都是类模板**(//Class templates//),因此需要特别指定**元素的类型**: 总的来说,**容器都是类模板**(//Class templates//),因此需要特别指定**元素的类型**:
 <code cpp> <code cpp>
行 192: 行 191:
 ===赋值与 swap=== ===赋值与 swap===
 容器的赋值分为三个类型的操作。具体操作可以参考下图: 容器的赋值分为三个类型的操作。具体操作可以参考下图:
-\\ \\ <html><div align="center"> <img src="/_media/programming/cpp/cpp_primer/container_assginment_op.svg width="700"> </div> </html> \\ \\+\\ \\ {{ :cs:programming:cpp:cpp_primer:container_assginment_op.svg?600 |}} \\ \\
 ==使用 assign operator 赋值== ==使用 assign operator 赋值==
 赋值操作符 ''='':该操作会直接将右边的容器的**整个范围**和**元素**赋值给左边,是**替换**(replace)的操作。如果左右容器**大小不匹配**,最后结果以**右边容器**为准: 赋值操作符 ''='':该操作会直接将右边的容器的**整个范围**和**元素**赋值给左边,是**替换**(replace)的操作。如果左右容器**大小不匹配**,最后结果以**右边容器**为准:
行 224: 行 223:
  <color #666>//**使用 sawp 进行交换以后,发生了什么样的变化?**//</color> \\ \\   <color #666>//**使用 sawp 进行交换以后,发生了什么样的变化?**//</color> \\ \\ 
 swap **对容器内的内容进行了交换**。内部的迭代器、引用和指针等等均指向原来的**元素**: swap **对容器内的内容进行了交换**。内部的迭代器、引用和指针等等均指向原来的**元素**:
-\\ \\ <html><div align="center"> <img src="/_media/programming/cpp/cpp_primer/swap.svg width="400"> </div> </html> \\ \\+\\ \\ {{ :cs:programming:cpp:cpp_primer:swap.svg?400 |}} \\ \\
  <color #666>//**哪些容器有例外?**//</color>  <color #666>//**哪些容器有例外?**//</color>
   - 在使用 swap 交换 //string// 的时候可能会使 迭代器、引用或者指针无效。   - 在使用 swap 交换 //string// 的时候可能会使 迭代器、引用或者指针无效。
行 259: 行 258:
 ===容器相关操作总览=== ===容器相关操作总览===
 除了 array, 所有的 STL 容器都提供了 Run-time 期间的容器元素操作机制。当然,根据容器的实现方式不同,不同的操作在不同的容器上的效率也不同: 除了 array, 所有的 STL 容器都提供了 Run-time 期间的容器元素操作机制。当然,根据容器的实现方式不同,不同的操作在不同的容器上的效率也不同:
-\\ \\{{ :cs:programming:cpp:cpp_primer:seq_adding_op.svg?600 |}}\\ \\+\\ \\ {{ :cs:programming:cpp:cpp_primer:seq_adding_op.svg?600 |}} \\ \\
 <WRAP center round help 100%> <WRAP center round help 100%>
 需要注意的是,使用对象**初始化**容器、**添加**、**插入对象**到容器这些操作,都是**拷贝操作**。实际对容器产生影响的不是原来的对象,而是它的拷贝。因此,之后对容器的任何操作**不会影响**原本的对象。 需要注意的是,使用对象**初始化**容器、**添加**、**插入对象**到容器这些操作,都是**拷贝操作**。实际对容器产生影响的不是原来的对象,而是它的拷贝。因此,之后对容器的任何操作**不会影响**原本的对象。