草庐IT

make_pair

全部标签

c++ - 如何将删除器传递给 make_shared?

从C++11开始,由于多种原因,开发人员倾向于将智能指针类用于动态生命周期对象。对于那些新的智能指针类、标准,甚至建议不要使用像new这样的运算符,而是建议使用make_shared或make_unique来避免一些容易出错。如果我们喜欢使用智能指针类,比如shared_ptr,我们可以构造一个,shared_ptrp(newint(12));我们还想将自定义删除器传递给智能指针类,shared_ptrp(newint(12),deleter);另一方面,如果我们喜欢使用make_shared来分配,例如。int,而不是使用new和shared_ptr构造函数,就像上面的第一个表达式,

c++ - std::pair<> 的默认构造函数是否将基本类型(int 等)设置为零?

写完后:std::pairx;我能保证x.first和x.second都为零吗?或者它们有什么值(value)吗?我关心的原因是因为我试图确定如果我访问不在map中的元素,是否保证值是指针的map返回NULL。即,如果我这样做:std::mapmy_map;std::cout那么我能保证得到零(NULL)吗?还是行为未定义? 最佳答案 是的,该保证成立。引用C++11标准,§20.3.2/2-3:        constexprpair();2Requires:is_default_constructible::valueistr

c++ - std::pair<> 的默认构造函数是否将基本类型(int 等)设置为零?

写完后:std::pairx;我能保证x.first和x.second都为零吗?或者它们有什么值(value)吗?我关心的原因是因为我试图确定如果我访问不在map中的元素,是否保证值是指针的map返回NULL。即,如果我这样做:std::mapmy_map;std::cout那么我能保证得到零(NULL)吗?还是行为未定义? 最佳答案 是的,该保证成立。引用C++11标准,§20.3.2/2-3:        constexprpair();2Requires:is_default_constructible::valueistr

c++ - C++ STL 中的 std::list<std::pair> 和 std::map 有什么区别?

std::list和有什么区别?和std::map?有没有find列表的方法也是? 最佳答案 std::map:是关于键的有序结构(也就是说,当您对其进行迭代时,键将始终增加)。仅支持唯一键(Xs)报价快find()方法(O(logn)),通过Key找到Key-Value对提供索引运算符map[key],也很快std::list>:是一个简单的成对序列X和Ys。它们会按照您放入的顺序保留。可以容纳任意数量的拷贝在list中查找特定键是O(N)(无特殊方法)提供splice方法。 关于c+

c++ - C++ STL 中的 std::list<std::pair> 和 std::map 有什么区别?

std::list和有什么区别?和std::map?有没有find列表的方法也是? 最佳答案 std::map:是关于键的有序结构(也就是说,当您对其进行迭代时,键将始终增加)。仅支持唯一键(Xs)报价快find()方法(O(logn)),通过Key找到Key-Value对提供索引运算符map[key],也很快std::list>:是一个简单的成对序列X和Ys。它们会按照您放入的顺序保留。可以容纳任意数量的拷贝在list中查找特定键是O(N)(无特殊方法)提供splice方法。 关于c+

c++ - 什么是 std::pair?

std::pair有什么用,我为什么要使用它,boost::compressed_pa​​ir带来什么好处? 最佳答案 compressed_pair使用一些模板技巧来节省空间。在C++中,一个对象(小o)不能与不同的对象具有相同的地址。所以即使你有structA{};A的大小不会为0,因为那时:Aa1;Aa2;&a1==&a2;会保持,这是不允许的。但是很多编译器会做所谓的“空基类优化”:structA{};structB{intx;};structC:publicA{intx;};这里,B没问题和C具有相同的大小,即使sizeo

c++ - 什么是 std::pair?

std::pair有什么用,我为什么要使用它,boost::compressed_pa​​ir带来什么好处? 最佳答案 compressed_pair使用一些模板技巧来节省空间。在C++中,一个对象(小o)不能与不同的对象具有相同的地址。所以即使你有structA{};A的大小不会为0,因为那时:Aa1;Aa2;&a1==&a2;会保持,这是不允许的。但是很多编译器会做所谓的“空基类优化”:structA{};structB{intx;};structC:publicA{intx;};这里,B没问题和C具有相同的大小,即使sizeo

c++ - 实现 C++14 make_integer_sequence

我尝试实现C++14别名模板make_integer_sequence,简化了类模板的创建integer_sequence.templatestructinteger_sequence{typedefTvalue_type;staticconstexprsize_tsize()noexcept{returnsizeof...(I);}};templateusingmake_integer_sequence=integer_sequence;//onlyforillustration.要实现make_integer_sequence,我们需要一个辅助结构make_helper。templ

c++ - 实现 C++14 make_integer_sequence

我尝试实现C++14别名模板make_integer_sequence,简化了类模板的创建integer_sequence.templatestructinteger_sequence{typedefTvalue_type;staticconstexprsize_tsize()noexcept{returnsizeof...(I);}};templateusingmake_integer_sequence=integer_sequence;//onlyforillustration.要实现make_integer_sequence,我们需要一个辅助结构make_helper。templ

c++ - 使用 make_shared 创建 shared_ptr 有什么缺点吗

使用make_shared()有什么缺点吗?而不是使用shared_ptr(newT).Boostdocumentation状态Therehavebeenrepeatedrequestsfromusersforafactoryfunctionthatcreatesanobjectofagiventypeandreturnsashared_ptrtoit.Besidesconvenienceandstyle,suchafunctionisalsoexceptionsafeandconsiderablyfasterbecauseitcanuseasingleallocationforbot