1

タイプ std::pair の要素を持つ std::vector があります。いくつかのアルゴリズムでは、2 つの反復子 (範囲) を返すため、その範囲内のすべての要素を取得し、ペアの最初のエントリを別のベクトルにコピーしたいと考えています。

std::vector< pair<double, int> > data;
std::vector<double> data2;
std::vector< pair<double, int> >::iterator it1, it2;

for (;it1!=it2; it1++)
{
  data2.push_back(it1->first);
}

ループを使用するとそれができますが、それを行うための簡単な stl アルゴリズムがあるかどうか疑問に思います。データサイズがかなり大きい場合、上記の操作が何度も繰り返されるため、ループを使用するとかなり遅くなります。

4

2 に答える 2

0

これは、演算子の優先順位によるものです。選択演算子.は、逆参照演算子よりも優先されます*

したがって、コンパイラがあなたが書いていると考えるのは

*(it1.first)

あなたが意味するとき

(*it1).first
于 2013-07-28T18:54:16.493 に答える