C++容器与noncopyable
来源:互联网 发布:网络教育是怎么回事 编辑:程序博客网 时间:2024/05/16 10:28
容器需要有复制语义因此,不能直接使用vector去存储noncopyable对象.
这个时候就需要移动语义:
#include <iostream>#include <vector>#include <boost/noncopyable.hpp>class A : boost::noncopyable{ public: A()=default; A(A&&a):a_(std::move(a.getValue())){} A& operator = (A&&) {} explicit A(int a):a_(a){} int getValue(){return a_;} private: int a_;};int main(){ std::vector< A > myVec; myVec.reserve(10); for(int i=0;i<10;++i) { A a(i); myVec.push_back(std::move(a));//std::move } for(int i=0;i<10;++i) { std::cout<<myVec[i].getValue()<<std::endl; } return 0;}
代码中对于move constructor
的声明定义如果去掉,将出现编译问题
参考:
https://stackoverflow.com/questions/26906014/non-copyable-elements-in-vector
阅读全文
1 0
- C++容器与noncopyable
- noncopyable
- noncopyable
- boost noncopyable实现与ADL
- C++:顺序容器与迭代器
- 【C++】STL常用容器总结之一:容器与迭代器
- [c++]派生类与容器类
- C++:为什么有容器与迭代器
- C++STL容器的选择与使用指南
- boost::noncopyable
- boost noncopyable
- boost::noncopyable
- boost noncopyable
- boost::noncopyable
- boost noncopyable
- noncopyable详解
- boost::noncopyable
- boost::noncopyable
- Hadoop 的简单描述
- angular常用模块
- MySQL数据库(34)
- 串口流控
- CocosBuilder回调事件失败问题
- C++容器与noncopyable
- android 版本升级,从服务器下载的apk,包解析失败问题解决
- 【Dlib+Python+Ubuntu】人脸landmark
- Mysql联合查询union和union all的使用介绍
- 蓝桥杯java第五届决赛第四题--排列序数
- Redis 与 数据库处理数据的两种模式
- 常用sql语句参考
- db2 row_number() over()
- iOS学习之路01