如果将参数传递给构造函数,我有一个类有时需要使用类型deque<int>
的成员,如果不是,则不会使用该成员。有效和风格地处理这种情况的最佳方法是什么?
我还想提一下,这个类的对象应该能够传递给同一个函数,尽管在同一个容器中删除存储的能力很好。我从来没有做过多态(正如评论中暗示的那样),但我想我会阅读它并尝试一下。
我的两个想法:
- 将成员变量保留为deque<int>
,我将假设存储为空deque<int>
- 使用指向deque<int>
的指针,只在需要时调用new
。
答案 0 :(得分:0)
在初始化deque成员以供使用时,您也可以设置指向deque成员的指针:
deque<int> queue_;
deque<int> *ptr_;
ptr_(NULL); // not used
ptr_(&queue_);
然而,速度方面,如果你经常不使用队列,新的可能会更快,因为默认情况下你只需要在指针中设置一个NULL。如果使用50/50,那么我的方法可能是最快的,因为你不需要处理更多的堆。
答案 1 :(得分:0)
如果性能有问题,我可能会使用选项1和“is_initialized”布尔标志:
class A
{
bool is_initialized;
public:
A(bool used=false):is_initialized(used)
{
};
private:
deque<int> _d;
};
是的,当没有使用deque时,您可以使用选项2保存一点内存,但是如果使用deque,则会产生取消引用指针的开销。
答案 2 :(得分:0)
您正在寻找的是boost::optional<deque<int>>
。没有其他任何事情可以在这里更清楚,更准确地记录您的意图。