我想存储具有特定名称的对象。
我想使用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);
是否有更简单的解决方案(数据结构)?
我应该补充一点,一旦我将它存储(复制?)在向量中,我就不需要这个结构,因为这一切都发生在另一个类(构造函数)中所以我不想在遇到任何问题时多次调用构造函数。
答案 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引入了其他查找结构 - 例如无序地图。