我想写一些类似下面的代码

class c{
  public:
    //...
    big_structure* find(int e){
        auto it = std::lower_bound(v1.begin(), v1.end(), e);
        return v2[it - v1.begin()];
    }
  private:
    std::vector<int> v1;            //v1 is sorted;
    std::vector<big_structure*> v2; //v2.size() = v1.size() + 1
}


这合法吗,而且当e不在v1中时,它将返回v2 [v1.size()]吗?

如果可能的话,我不希望它== v1.end()。

最佳答案

这合法吗,而且当v2[v1.size()]不在e中时它将返回v1吗?


是。可以将末端随机访问迭代器与相同序列中的其他迭代器进行算术运算,从而获得预期的结果。

关于c++ - 随机访问迭代器-在C++中是否vector.end()-vector.begin()= vector.size();,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19500490/

10-13 08:22