STL容器中元素的具体需求

本文详细介绍了STL容器中元素的值语义和引用语义,解释了如何使用值语义进行元素的复制、赋值及销毁,并讨论了在特定情况下使用引用语义时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

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

方法

描述

说明

复制构造函数

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

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

赋值操作符(operator =)

赋值。

每次修改元素时会用到

析构函数

销毁一个元素

每次删除元素时会用到

默认构造函数

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

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

Operator ==

比较两个元素的相等性

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

Operator <

小于比较

对两个容器的《比较。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值