考虑以下代码:#include <memory> #include <iostream> using namespace std; struct MySharedStruct { int i; }; void print_value_of_i(weak_ptr...
这更多是一个样式问题而不是性能问题。我刚刚将我的指针(大部分)转换为shared_ptr对象,并勉强接受了weak_ptr作为原始指针的替代方法。我的问题是,遍历共享指针对象(比如vector)序列的首选方法是什么?以下是我一直在做的内容: std::vector<std::share...
我正在使用外部网络库,该库返回代表打开套接字的一些神奇结构,并且文档说明在将它们插入STL容器时,应使用std::owner_less进行比较。 std::map<MagicStructure, std::shared_ptr<Client>, std::owner_les...
我在SWIG、共享指针和继承方面遇到了问题。 我正在创建各种C++类,它们彼此继承,使用Boost共享指针来引用它们,然后使用SWIG包装这些共享指针以创建Python类。 我的问题如下: B是A的子类 sA是对A的共享指针 sB是对B的共享指针 f(sA)是一个期望共享指针指向A的函...
我编写了以下代码,以查看当shared_ptr<Thing>的最后一个引用是shared_ptr<void>并且其自身被销毁时,它会表现出什么行为。#include <iostream> #include <string> #include &l...
在使用 boost::shared_ptr 时,你可能会犯哪些错误呢?换句话说,我在使用 boost::shared_ptr 时需要避免哪些陷阱呢?
我正在使用reset()作为共享指针的默认值(相当于NULL)。 但是我该如何检查共享指针是否为NULL? 这样写能返回正确的值吗?boost::shared_ptr<Blah> blah; blah.reset() if (blah == NULL) { //Doe...
考虑:delete new std :: string [2]; delete [] new std :: string; 众所周知,第一个是错误的。如果第二个不是错误的,我们就不需要两个不同的运算符了。 现在考虑:std :: unique_ptr <int> x (new i...
我有一个资源管理器(resource_manager)类,它在内部维护了一个std::vector >。resource_manager是resource的友元类。我希望只有resource_manager才能创建/删除resource,所以我将其构造函数设为private(这个方法可行)。 ...
我对C++11最佳实践有一个问题。当清除一个共享指针时,我应该使用没有参数的reset()函数,还是将shared_ptr设置为nullptr?例如:std::shared_ptr<std::string> foo(new std::string("foo")); foo.rese...