空的deque与未使用的指向deque的指针
Empty deque versus unused pointer to deque
我有一个类,如果参数传递给构造函数,有时需要使用类型为deque<int>
的成员,如果不是,则不使用该成员。怎样才能有效而有风格地处理这种情况呢?
我还想提一下,该类的对象应该能够传递给相同的函数,尽管在相同的容器中删除存储的能力是好的。我从来没有做过多态性(正如在评论中所暗示的那样),但我想我将阅读它并尝试一下。
我的两个想法:
-保持成员变量为deque<int>
,我假设它将被存储为空deque<int>
。
—使用指向deque<int>
的指针,只在需要时调用new
还可以在初始化deque成员时设置指向该成员的指针:
deque<int> queue_;
deque<int> *ptr_;
ptr_(NULL); // not used
ptr_(&queue_);
然而,在速度方面,如果你不经常使用队列,new可能会更快,因为默认情况下你所做的一切都是在指针中设置NULL。如果使用50/50,那么我的方法可能是最快的方法之一,因为您不需要处理更多的堆。
如果性能是一个问题,我可能会使用选项1和"is_initialized"布尔标志:
class A
{
bool is_initialized;
public:
A(bool used=false):is_initialized(used)
{
};
private:
deque<int> _d;
};
是的,当不使用deque时,选项2可以节省一点内存,但是如果使用它,就会产生指针解引用的开销。
您正在寻找的正是boost::optional<deque<int>>
。没有什么比这更清楚、更正确地说明你的意图了。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- Deque指针内存泄漏
- deque中指针的自定义比较器
- 空的deque与未使用的指向deque的指针
- New和delete操作符不影响指向该类的指针的Deque的内容
- 如何获取指向原始数据的std::deque指针
- 函数/方法指针被压入Deque
- 将deque转换为void指针是否安全
- Deque emplace_back指向对象的新指针