gpt4 book ai didi

c++ - 将 unique_ptr 作为对插入 vector 中

转载 作者:行者123 更新时间:2023-11-30 02:22:15 24 4
gpt4 key购买 nike

我有以下 vector :

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

将此指针插入 vector 的正确方法是什么?

谢谢你的帮助。

最佳答案

不要将模板参数传递给 std::make_pair。就让他们推演吧。参见 this video(link)史蒂文·拉瓦维 (Steven Lavavej)。 (感谢路人发现链接)

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++ - 将 unique_ptr 作为对插入 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47419297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com