为一个c++ vector成员添加一个标志

Add a flag for one c++ vector member

本文关键字:一个 添加 标志 成员 c++ vector      更新时间:2023-10-16

旧程序使用vector作为自定义类型的容器,如:

std::vector<my_type> m_my_type_queue;

它使用vector的api,如:

m_my_type_queue.size();
m_my_type_queue.begin();

现在我想用一个额外的标签来扩展队列,所以我将向量与一个标签一起嵌入:

struct my_type_queue {
  std::vector<my_type> m_vector;
  mutable bool tag;
}
my_type_queue m_my_type_queue;

但是这个实现的问题是我需要用一个额外的层来访问队列,比如:

m_my_type_queue.m_vector.size();
m_my_type_queue.m_vector.begine();

我的问题是如何像以前一样访问成员,同时又能访问age,就像:

m_my_type_queue.size();      // the same as original implementation
m_my_type_queue.begin();     // the same as original implementation
m_my_type_queue.tag = true;  // new feacture with tag access

我可以重新定义这些API的矢量和转发它们到真正的矢量,但有什么简单的方法来做到这一点?

满足需求的一种方法是使my_type_queue派生自std::vector。

但是我推荐一种不同的方法:使用vector,并保持一个单独的标志。