我有一个
flattened2d<VecType> bids;
我只想使用 [] 运算符访问而不使用迭代器。我不想复制向量。有没有一种有效的方法来获取 flattened2d 的索引(例如,0)?
我有一个
flattened2d<VecType> bids;
我只想使用 [] 运算符访问而不使用迭代器。我不想复制向量。有没有一种有效的方法来获取 flattened2d 的索引(例如,0)?
flattened2d 没有随机访问方法。您可以使用随机访问运算符 [] 构建自己的类似数据结构。对于 n 个子容器,构造两个向量。
给定这些向量, operator[] 可以计算为
// Find j such that A[j] is the subcontainer containing element [i]
size_t j = lower_bound(B.begin(),B.end(),i)-B.begin();
// Index the subcontainer.
return A[j][i-B[j]]
请注意,访问时间将为 O(P),其中 P 是子容器的数量。如果有很多访问,你最好还是将子容器复制到一个连续的容器中。