1

こんにちは、ベクター イテレータを使用してベクターの最初の 5 つの要素を返す方法はありますか?

この例では、ベクター自体のすべての値のみになります。

// vector::begin/end
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  for (int i=1; i<=10; i++) myvector.push_back(i);

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

うーん、すべての迅速な返信に感謝します..しかし、それらを関数に入れようとするとコンパイルエラーが発生するのはなぜですか?

void Test::topfives()
{   
    topfive.assign( point1.begin(), point1.end() ); 
    sort(topfive.begin(), topfive.end(), sortByCiv);
}

void Test::DisplayTopFiveResult()
{
    test.topfives();

    copy(topfive.begin(), topfive.begin()+ min(topfive.size(), (size_t )5),
    ostream_iterator<Level>(cout << level.displayClassresult()));
}
4

3 に答える 3

3

myvector.begin()を 5進める

std::copy(myvector.begin(), 
          myvector.begin()+std::min(myvector.size(), (size_t)5), 
          std::ostream_iterator<int>(std::cout,"\n"));

これは、最大で上位 5 つの要素を出力します。myvector

ここを見る

参照: - std::copystd::min、およびstd::ostream_iterator

于 2013-10-27T05:19:47.717 に答える
1
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  for (int i=1; i<=10; i++) myvector.push_back(i);

  std::cout << "myvector contains:";
  std::vector<int>::iterator it = myvector.begin()
  for (int i = 0; i < 5 && it != myvector.end(); i++) {
    std::cout << ' ' << *it;
    ++it;
  }
  std::cout << '\n';

  return 0;
}
于 2013-10-27T05:20:45.103 に答える