0

私は現在、iterators 算術演算と小さな問題の積み重ねに取り組んでいます。の最初と最後の要素の合計
を作成し、その後にの2 番目と最後の要素、 の3 番目と最後の要素を追加する必要がありますvector<int>vector<int>vector<int>


1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17

1+9 2+9 3+9 4+9 5+9 6+9 7+9 ......

iteratorしたがって、基本的には、メンバー関数*.begin() , *.end() のみを使用して、この算術演算の実際のコードが必要 です! 私は多くの方法を試しましたが、この操作を.begin()andのみで行う方法が頭に浮かびません.end()。他のメンバー関数を見つけたのですが、この関数はSTDライブラリで説明されており、基礎知識レベルでは説明されていません。したがって、可能であれば、メンバー関数begin()のみを使用してコードを作成するための助けが必要です。end()

これまでに取得したコード

int main()
{  

vector<int> numset;
int num_input;
auto beg=numset.begin(), end=numset.end();
while (cin>>num_input)
{
    numset.push_back(num_input);
}
for (auto it = numset.begin()+1; it !=numset.end(); ++it)
{
    // *it=*it+1+nuset.end(); -- Wrong  X
            // *it+=(end-beg)/2;      -- Totally wrong(and totally stupid) X
            // *it + numset.back()   -- can't use other member functions X 
    //////// I've stack here dont know what code need //////

              cout<<*it<<endl;    
}

お時間をいただきありがとうございます。

4

1 に答える 1

0

実行する操作は です*it+*(it-1)。(コードに括弧とスペースを追加すると役立つ場合があります。) これにより、シーケンスから 2 つの隣接する要素が追加されます。

シーケンスの最後の要素は ですnumset.back()*it + numset.back()代わりに試してみてください。また、最初と最後の要素の合計を出力したいので、2 番目の要素から始める必要はありません。ただし、最後の要素の合計をそれ自体と一緒に出力したくない場合は、 で停止する必要がend() - 1あります。

于 2013-07-01T03:39:36.617 に答える