空deque与未使用的指向deque的指针

时间:2013-05-26 02:56:01

标签: c++ deque

如果将参数传递给构造函数,我有一个类有时需要使用类型deque<int>的成员,如果不是,则不会使用该成员。有效和风格地处理这种情况的最佳方法是什么?

我还想提一下,这个类的对象应该能够传递给同一个函数,尽管在同一个容器中删除存储的能力很好。我从来没有做过多态(正如评论中暗示的那样),但我想我会阅读它并尝试一下。

我的两个想法:
- 将成员变量保留为deque<int>,我将假设存储为空deque<int> - 使用指向deque<int>的指针,只在需要时调用new

3 个答案:

答案 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>>。没有其他任何事情可以在这里更清楚,更准确地记录您的意图。