将唯一的_ptr插入向量为一对

Insert unique_ptr in vector as pair

本文关键字:向量 插入 ptr 唯一      更新时间:2023-10-16

我有以下矢量:

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);