将唯一的_ptr插入向量为一对
Insert unique_ptr in vector as pair
我有以下矢量:
std::vector< std::pair< std::unique_ptr<CEdit>, CRect >> m_editCtrls;
我正在尝试在这里插入一些数据:
std::unique_ptr<CEdit> edit = std::make_unique<CEdit>();
CRect rectEdit;
//Init edit....
//1 - This doesn't work
std::pair< std::unique_ptr<CEdit>, CRect > pair = std::make_pair<std::unique_ptr<CEdit>, CRect>(std::move(edit), rectEdit);
//2 - This also
m_editCtrls.insert(std::make_pair(std::move(edit), rectEdit));
在第一种情况下,我会遇到错误-no instance of function template
,第二-no instance of overloaded function
。
将此指针插入向量的正确方法?
感谢您的帮助。
不要将模板参数传递给std::make_pair
。只是让他们推导。请参阅Steven Lavavej的此视频(链接)。(感谢Passer找到链接)
std::pair<std::unique_ptr<CEdit>, CRect> pair = std::make_pair(std::move(edit), rectEdit);
std::vector
没有一个名为 insert
的函数,该函数只有一个参数。您必须通过迭代器才能进行位置。也许您正在寻找push_back
?
m_editCtrls.push_back(std::make_pair(std::move(edit), rectEdit));
甚至更好,emplace_back
。
m_editCtrls.emplace_back(std::move(edit), rectEdit);
相关文章:
- 如何在向量数组中插入元素?
- 将一个向量插入另一个向量的某个位置
- 如何将整数向量值插入字符向量
- C++ 向量插入和迭代器混淆
- 如何将整数向量插入到键中,标准::映射的值
- 当类具有常量时,将对象插入到向量中
- 将向量插入到向量向量中
- C++ std::向量插入两个元素替代算法失败
- C++向量插入元素
- 我们可以使用Back() - 值索引在其上执行向量插入
- C++将向量插入到另一个覆盖向量中
- 如何将向量插入2D矢量的定义位置
- 不能使用 pimpl 习语将用户定义的向量插入到封装的向量中
- C :将向量插入地图
- c++11将向量插入到特定位置
- 向量::插入的异常安全保证是什么?
- C++ 向量插入和读取
- STL 向量插入 - 复制构造函数
- 哪一种方法是更快的向量(插入后排序)或集合
- 标准::向量插入的摊销分析