我希望你们能帮助我解决这个问题。我想创建集合。我想我想这样构建它们。有一个像这样的指针向量:
vector<char*> sets;
用户将在单个字母中输入以表示集合的名称,例如“A”。但后来我想'A'指向另一个容器,所以我可以添加元素 这是向量的向量吗? “A”如何指向其容器?
答案 0 :(得分:2)
您需要的是map。
std::map<char, std::vector<YourElementClass> >
答案 1 :(得分:1)
我认为std::map<char*, std::set<Type> >
会满足您的需求(其中Type是您想要存储在套装中的任何内容)。
另外,实施自己版本的STL容器通常是一个坏主意。
答案 2 :(得分:1)
在这种情况下,您可以使用向量矢量,因为您的键范围有限:
vector<vector<MyType> > container(128);
现在,您可以使用输入的字符作为键来访问正确的容器:
MyType myTypeInstance;
char input = 'a';
container[input].push_back(myTypeInstance);
这应该比使用std::map(即map<char, MyType>
)更快,但需要预先分配每个可能的容器。它还浪费空间,使用0到31范围内的不可打印字符。后一个问题可以通过仅分配96个值并从用户输入中减去32来解决。
此外,根据内部容器中类型的复杂性,最好存储指针(或类似boost::shared_ptr的智能指针),而不是按值存储。
vector<vector<shared_ptr<MyType> > > container(96);
请注意,如果您使用原始指针,则必须确保删除项目,因为它们不会被矢量回收。