c++ - 使用 map 代替 vector

标签 c++ vector dictionary

我正在扩展一个已经存在的 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/

相关文章:

c++ - 为什么编译器对原始/标准数组而不是 vector 使用 XMM 寄存器?

c++ - 模板成员函数签名与非模板成员函数签名冲突

c++ - 通过值查找 map 中的元素

c++ - ethtool ioctl 返回未填充的 ethtool_link_settings

c++ - 在 C++11 中使用 sort 函数有什么问题?

c++ - C++中的图像处理

python - 使用模式作为字典键

c++ - '字' : 'char [20]' differs in levels of indirection from 'unsigned short'

c++ - 带有 vector 迭代器的程序中的段错误

python - 使用嵌套字典创建多索引 `Series`