存储具有名称的对象的数据结构

时间:2014-09-29 10:30:23

标签: c++ object vector data-structures struct

我想存储具有特定名称的对象。

我想使用struct然后将它们存储在vector中,但有人建议我应该使用不同的数据结构,稍微简单一点,但我似乎无法找一个。

我当前的("复杂")解决方案:

//in header file
struct objStorage{
   Classname obj;
   string name;
};
vector<objStorage> vec;

//in constructor
objStorage firstObj;
firstObj.obj = new Classname();
firstObj.name = "foo";
vec.push_back(firstObj);

是否有更简单的解决方案(数据结构)?

我应该补充一点,一旦我将它存储(复制?)在向量中,我就不需要这个结构,因为这一切都发生在另一个类(构造函数)中所以我不想在遇到任何问题时多次调用构造函数。

1 个答案:

答案 0 :(得分:3)

如果您想通过某个键(例如字符串)查找项目,则使用的经典之处是map

std::map<std::string, Classname> items;
std::pair<std::map<std::string, Classname>::iterator, bool> inserted =
    items.insert(std::make_pair(std::string("foo"), Classname()));
items["bar"] = Classname();

在这个设置中,如果你真的认为你想使用指针,你应该考虑某种形式的智能指针。

还有其他选项,例如,C ++ 11引入了其他查找结构 - 例如无序地图。