0

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

它 = 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;
}
4

1 回答 1

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};
于 2013-03-28T22:54:52.133 回答