指针传染媒介做集合或集合

时间:2009-08-06 15:10:48

标签: c++

我希望你们能帮助我解决这个问题。我想创建集合。我想我想这样构建它们。有一个像这样的指针向量:

vector<char*> sets;

用户将在单个字母中输入以表示集合的名称,例如“A”。但后来我想'A'指向另一个容器,所以我可以添加元素 这是向量的向量吗? “A”如何指向其容器?

3 个答案:

答案 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);

请注意,如果您使用原始指针,则必须确保删除项目,因为它们不会被矢量回收。