我正在扩展一个已经存在的 C++ 代码。 其中一个类成员是另一个类对象的类型 vector :
class Road
{
....
vector<Link*> links; //Link is just another class
}
其他模块通过大量序列迭代器使用此类及其成员。 现在,在扩展代码的同时,我需要向 Link 类添加一个名为 linkID 的成员,并使用此 linkID 来查找/访问我的“Link”对象。
问题: 我不会通过遍历数百万项来在 vector 中搜索链接对象(使用 LinkID),只是为了找到特定的链接对象。最好的解决办法是“ map ”!对吧?
....
map<linkID,*link> links
....
lnk=links[linkID]
.........
但问题是我不能修改当前的源代码,除了非常小的修改,比如添加 linkID 等。
所以我的明显问题是: 是否可以使用 map 代替 vector (无论如何)。 换句话说,我想创建一个 map ,将其填充,然后将其视为 vector 。可能的? 感谢您的意见
最佳答案
The best solution is "map"! right?
是的,听起来 map 是解决您问题的最简单方法。但是我不使用 operator[],而是使用 find 和 insert 方法。
最初,您可以更改代码以使用此类型的 map std::map< unsigned int, link* >
,因为它与 vector< link* >
最相似.然后你可以轻松切换到std::map< LinkId, link* >
.
关于c++ - 使用 map 代替 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9630418/