0

要素 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;
}
4

1 に答える 1

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

要素の 1 つが欠けています。これは次のようになります。

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

これは、コンストラクターの 2 番目の引数が、コピーするシーケンスの末尾の 1 つ後ろを指す必要があるためです。

std::vectorC++11 では、次のように直接初期化できることに注意してください。

std::vector<int> myvector = {1,2,3,4,5,5};
于 2013-03-28T22:54:52.133 に答える