adjacent_find不检测最后两个元素

时间:2013-03-28 22:50:13

标签: c++

假设我有一个包含元素1,2,3,4,5,5的向量。 我有这样的代码。

it = std :: adjacent_find(myvector.begin(),myvector.end());

这不会检测到最后匹配的元素。这是预期的行为吗?

[编辑]添加代码

int main () {
  int myints[] = {1,2,3,4,5,5};
  std::vector<int>::iterator it;
  std::vector<int> myvector (myints,myints+5);

  // using default comparison:
  it = std::adjacent_find (myvector.begin(), myvector.end());

  if (it!=myvector.end())
    std::cout << "the first pair of repeated elements are: " << *it << '\n';

  return 0;
}

1 个答案:

答案 0 :(得分:4)

std::vector<int> myvector (myints,myints+5);

你错过了一个元素。这应该是:

std::vector<int> myvector (myints,myints+6);

这是因为构造函数的第二个参数应指向要复制的序列末尾的一个参数。

请注意,使用C ++ 11,您可以直接使用以下内容初始化std::vector

std::vector<int> myvector = {1,2,3,4,5,5};