簡體   English   中英

迭代器算法

[英]Iterator arithmetic

我現在正在使用iterators 算術運算,並在小問題上進行堆棧。
我需要的第一和最后一個元素的總和 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().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;    
}

感謝您的時間。

您執行的操作是*it+*(it-1) (這可能有助於在代碼中添加更多的括號和空格。)這將在序列中添加兩個相鄰的元素。

序列中的最后一個元素是numset.back() 因此,請嘗試*it + numset.back() 無需從第二個元素開始,因為您確實想打印第一個和最后一個元素的總和。 如果您不想與自己一起打印最后一個元素的總和,則應在end() - 1處停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM