前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则C102-109:容器的基本要求

C++核心准则C102-109:容器的基本要求

作者头像
面向对象思考
发布2020-03-25 16:33:38
2630
发布2020-03-25 16:33:38
举报
文章被收录于专栏:C++核心准则原文翻译

火欧珀

C.102: Give a container move operations

C.102:为容器实现移动操作‍

Reason(原因)

Containers tend to get large; without a move constructor and a copy constructor an object can be expensive to move around, thus tempting people to pass pointers to it around and getting into resource management problems.

容器会变得越来越大;如果对象没有移动构造函数和拷贝构造函数,移动它的成本就会很高,其结果就是导致人们更愿意传递指向对象的指针从而引起资源管理方面的问题。

Example(示例)

代码语言:javascript
复制
Sorted_vector<int> read_sorted(istream& is)
{
    vector<int> v;
    cin >> v;   // assume we have a read operation for vectors
    Sorted_vector<int> sv = v;  // sorts
    return sv;
}

A user can reasonably assume that returning a standard-like container is cheap.

用户可以合理地假设返回和标准库类似的容器是低成本的。

Enforcement(实施建议)

???

C.103: Give a container an initializer list constructor

C.103:为容器实现一个初始化类别形式的构造函数‍

Reason(原因)

People expect to be able to initialize a container with a set of values. Familiarity.

人们希望可以通过一组值来初始化容易。这是友好性方面的考虑。

Example(示例)

代码语言:javascript
复制
Sorted_vector<int> sv {1, 3, -1, 7, 0, 0}; 
// Sorted_vector sorts elements as needed

Enforcement(实施建议)

???

C.104: Give a container a default constructor that sets it to empty

C.104:为容器实现一个将容器初始化为空的默认构造函数‍

Reason(原因)

To make it Regular.

保持容器的常规性。

Example(示例)

代码语言:javascript
复制
vector<Sorted_sequence<string>> vs(100);    // 100 Sorted_sequences each with the value ""

Enforcement(实施建议)

???

C.109: If a resource handle has pointer semantics, provide * and ->

C.109:如果资源句柄包含指针语义,提供*和->运算符

Reason(原因)

That's what is expected from pointers. Familiarity.

这是来自指针类型的期望。友好型方面的考虑。

Example(示例)

代码语言:javascript
复制
???

Enforcement(实施建议)

???

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c102-give-a-container-move-operations


觉得本文有帮助?请分享给更多人。

关注【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ???
  • ???
  • That's what is expected from pointers. Familiarity.
  • ???
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档