小编Ric*_*est的帖子

如何在施工时为std :: vector保留内存?

通常,我呼吁reservestd::vector构建后立即.这通常不会导致std::vector现有的堆分配被销毁并被替换为新的堆分配吗?有没有办法在构建时保留内存而不是分配堆空间然后立即销毁它?或者是否有一个实施技巧,std::vector以确保这不是一个问题?

可用的构造函数似乎只能用于填充std::vectorwith值,而不是显式保留空间.

c++ stdvector

20
推荐指数
1
解决办法
6385
查看次数

“std::vector”的恒定时间“包含”?

我正在使用一些代码,通过将其地址与描述数据std::vector范围的地址进行比较,检查是否在恒定时间内包含给定元素。vector然而我怀疑,虽然它有效,但它依赖于未定义的行为。如果该元素不包含在 中,vector则不允许进行指针比较。

bool contains(const std::vector<T>& v, const T& a) {
  return (v.data() <= &a) && (&a < v.data() + v.size());
}
Run Code Online (Sandbox Code Playgroud)

我相信这是未定义的行为吗?如果是这样,有没有办法在不大幅改变代码时间复杂度的情况下做同样的事情?

c++ contains time-complexity stdvector undefined-behavior

5
推荐指数
1
解决办法
550
查看次数