【问题标题】:How to reserve 2dimention vector with pair如何用pair保留二维向量
【发布时间】:2019-06-01 08:55:27
【问题描述】:

我想直接访问二维向量索引。

但我不知道如何预订

vector<pair<<vector<int>, int>>..   

我该怎么办?

           vector<pair<vector<int>, int>> c_list;

           vector<int> population;

           population.push_back(1);
           population.push_back(2);
           population.push_back(3);

           c_list[0].first = population;

向量超出范围

【问题讨论】:

  • 你可以像其他任何东西一样使用reserveresize
  • c_list.reserve(5);
  • Works fine.。因缺少minimal reproducible example 而投票结束。
  • 我知道如何保留 1 个分解向量。
  • 请注意,reserve 改变了向量的容量,但不改变大小。如果您只保留,索引仍然会超出范围。

标签: c++ vector std


【解决方案1】:

如 cmets 中所述,reserve 仅更改向量的容量,但不会更改大小。它可以提高大型vectors 的性能,因为许多push_backs 可能会导致vector 中的内部resize 操作进行多次分配和释放,这可能需要一些时间。

在您的示例中,只需在 c_list[0].first = population; 之前调用 c_list.resize(1); 就可以了。 resize 真的会立即改变大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多