我有一个
flattened2d<VecType> bids;
我只想在不使用迭代器的情况下使用[]运算符进行访问。我不想复制矢量。有没有一种有效的方法来获得flattened2d的索引(例如0)?
答案 0 :(得分:2)
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是子容器的数量。如果有很多访问,最好还是将子容器复制到一个连续的容器中。