在向量中插入 unique_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 的 this video(link)。 (感谢路人发现link)
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);
我有以下向量:
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 的 this video(link)。 (感谢路人发现link)
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);