草庐IT

auto_ptr_ref

全部标签

c++ - 为什么将 std::auto_ptr<> 与标准容器一起使用是错误的?

为什么用std::auto_ptr会出错用标准容器? 最佳答案 C++标准规定STL元素必须是“可复制构造的”和“可赋值的”。换句话说,一个元素必须能够被分配或复制,并且这两个元素在逻辑上是独立的。std::auto_ptr不满足这个要求。以这段代码为例:classX{};std::vector>vecX;vecX.push_back(newX);std::auto_ptrpX=vecX[0];//vecX[0]isassignedNULL.要克服这个限制,您应该使用std::unique_ptr,std::shared_ptr或s

c++ - C++11 auto 关键字太多了?

我一直在使用C++11标准中提供的新auto关键字来处理复杂的模板类型,我相信它就是为此而设计的。但我也将它用于以下方面:autofoo=std::make_shared();更怀疑的是:autofoo=bla();//wherebla()returnashared_ptr我没有看到太多关于这个话题的讨论。似乎auto可能被过度使用,因为类型通常是文档和完整性检查的一种形式。您在使用auto时的界限在哪里?此新功能的推荐用例是什么?澄清一下:我不是在寻求哲学观点;我要求标准委员会对该关键字的预期用途,可能会就该预期用途在实践中的实现方式发表评论。 最佳答案

c++ - C++11 auto 关键字太多了?

我一直在使用C++11标准中提供的新auto关键字来处理复杂的模板类型,我相信它就是为此而设计的。但我也将它用于以下方面:autofoo=std::make_shared();更怀疑的是:autofoo=bla();//wherebla()returnashared_ptr我没有看到太多关于这个话题的讨论。似乎auto可能被过度使用,因为类型通常是文档和完整性检查的一种形式。您在使用auto时的界限在哪里?此新功能的推荐用例是什么?澄清一下:我不是在寻求哲学观点;我要求标准委员会对该关键字的预期用途,可能会就该预期用途在实践中的实现方式发表评论。 最佳答案

c++ - 带有数组的 unique_ptr 有什么用吗?

std::unique_ptr支持数组,例如:std::unique_ptrp(newint[10]);但是需要吗?可能使用std::vector或std::array更方便。你觉得这个结构有什么用处吗? 最佳答案 有些人没有使用std::vector的奢侈,即使有分配器。有些人需要一个动态大小的数组,所以std::array出来了。有些人从已知返回数组的其他代码中获取数组;并且该代码不会被重写以返回vector什么的。通过允许unique_ptr,您就可以满足这些需求。简而言之,您使用unique_ptr当您需要时。当替代方案根本

c++ - 带有数组的 unique_ptr 有什么用吗?

std::unique_ptr支持数组,例如:std::unique_ptrp(newint[10]);但是需要吗?可能使用std::vector或std::array更方便。你觉得这个结构有什么用处吗? 最佳答案 有些人没有使用std::vector的奢侈,即使有分配器。有些人需要一个动态大小的数组,所以std::array出来了。有些人从已知返回数组的其他代码中获取数组;并且该代码不会被重写以返回vector什么的。通过允许unique_ptr,您就可以满足这些需求。简而言之,您使用unique_ptr当您需要时。当替代方案根本

c++ - unique_ptr 和 shared_ptr 的区别

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:pimpl:shared_ptrorunique_ptrsmartpointers(boost)explained有人能解释一下shared_ptr和unique_ptr之间的区别吗? 最佳答案 这两个类都是智能指针,这意味着它们会自动(在大多数情况下)在无法再引用该对象时释放它们指向的对象。两者的区别在于每种类型有多少个不同的指针可以引用一个资源。当使用unique_ptr时,最多可以有一个unique_ptr指向任一资源。当unique_ptr被销毁

c++ - unique_ptr 和 shared_ptr 的区别

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:pimpl:shared_ptrorunique_ptrsmartpointers(boost)explained有人能解释一下shared_ptr和unique_ptr之间的区别吗? 最佳答案 这两个类都是智能指针,这意味着它们会自动(在大多数情况下)在无法再引用该对象时释放它们指向的对象。两者的区别在于每种类型有多少个不同的指针可以引用一个资源。当使用unique_ptr时,最多可以有一个unique_ptr指向任一资源。当unique_ptr被销毁

c++ - 使用 C++1 1's ' auto' 可以提高性能吗?

我明白为什么C++11中的auto类型会提高正确性和可维护性。我读过它还可以提高性能(AlmostAlwaysAuto由HerbSutter撰写),但我错过了一个很好的解释。auto如何提高性能?谁能举个例子? 最佳答案 auto可以通过避免静默隐式转换来提高性能。我觉得引人注目的一个例子如下。std::mapm;//...for(std::pairconst&item:m){//dostuff}看到错误了吗?在这里,我们认为我们通过const引用优雅地获取map中的每个项目并使用新的range-for表达式来明确我们的意图,但实际

c++ - 使用 C++1 1's ' auto' 可以提高性能吗?

我明白为什么C++11中的auto类型会提高正确性和可维护性。我读过它还可以提高性能(AlmostAlwaysAuto由HerbSutter撰写),但我错过了一个很好的解释。auto如何提高性能?谁能举个例子? 最佳答案 auto可以通过避免静默隐式转换来提高性能。我觉得引人注目的一个例子如下。std::mapm;//...for(std::pairconst&item:m){//dostuff}看到错误了吗?在这里,我们认为我们通过const引用优雅地获取map中的每个项目并使用新的range-for表达式来明确我们的意图,但实际

c++ - 是否需要 std::unique_ptr<T> 才能知道 T 的完整定义?

我在标题中有一些代码,如下所示:#includeclassThing;classMyClass{std::unique_ptrmy_thing;};如果我在不包含Thing类型定义的cpp中包含此header,则在VS2010-SP1下无法编译:1>C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\include\memory(2067):errorC2027:useofundefinedtype'Thing'将std::unique_ptr替换为std::shared_ptr即可编译。所以,我猜是当前VS2010std::unique