调整小于连续数组的 C++ 矢量大小

resizing c++ vector size for less-than-contiguous arrays?

本文关键字:C++ 小于 连续 数组 调整      更新时间:2023-10-16

假设我们有各种 int 值映射到指向数据的指针。 我们知道它们不会太稀疏以至于我们想要一个map<>,我们喜欢快速查找vector<>

我是一个经验丰富的 C 人(C++尽管不是 STL),但代码应该像以下那样冗长似乎不对:

if (i>= vec.size())
    vec.resize(i+1);
if (!vec[i])
    vec[i] = pmydata;

此外,在各种C++版本中,最不冗长的方式是否发生了变化?

stl 不提供此类容器的快捷方式。你模仿它的方式是正确的。

正如 Marc Glisse 所提到的,您可以通过 std::vector 编写一个适配器,以提供与 std::unordered_map 或 std::map 相同的接口。

尽管 c++ 提供了一些很棒的容器,但您仍然必须手动实现一些东西以满足您的确切需求。