0

我想写一些类似于以下代码的东西

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()。

4

1 回答 1

6

这是否合法,而且它会在不存在v2[v1.size()]时返回?ev1

是的。Past-the-end 随机访问迭代器可以与来自同一序列的其他迭代器进行算术运算,从而给出预期的结果。

于 2013-10-21T17:05:03.877 回答