STL容器中元素的具体需求

STL容器对元素使用的是值语义(value semantics). 也就是说,容器会储存要添加的元素的副本。并且在需求时返回这些元素的副本。容器还可以利用赋值运算符对元素赋值。以及调用析构函数销毁元素。因此,在编写一个可用于STL容器的类时,必须要求是可拷贝的。(copyable).

 

如果你倾向于使用引用语义,此时你需要保存元素的指针而不是元素的值。容器复制一个指针的时候,也是简单的拷贝指针的值。如果在容器中使用指针,建议你使用带引用计数的智能指针。遗憾的是,STL中并没有带引用计数的智能指针。你可以使用Boost提供的shared_ptr,或者是自己实现一个。带引用计数的智能指针在多线程环境里运行时会有许多问题,需要你自己来进行线程的同步。这很麻烦,而且会影响性能。但这是必须的。

 

以下的表列出了容器中元素的具体需求:

方法

描述

说明

复制构造函数

从现有的一个对象复制一个新对象

每次插入一个新元素时都会调用

赋值操作符(operator =)

赋值。

每次修改元素时会用到

析构函数

销毁一个元素

每次删除元素时会用到

默认构造函数

不带任何参数的构造一个元素

只对某些操作是必要的,比如说resize,或者是初始化一个初始长度的vector

Operator ==

比较两个元素的相等性

对两个容器的operator ==会用到

Operator <

小于比较

对两个容器的《比较。

关联容器的默认比较操作。

 

你可能感兴趣的:(多线程)