2013-07-01 48 views
0

我現在正在與iterators算術運算和堆棧上的小問題。
我需要作出薩姆的vector<int>第一和最後元件隨後的vector<int>第二和最後元件,vector<int>
實施例的第三和最後一個元件的

由用戶輸入數字
1 2 3 4 5 6 7 8 9
輸出應該是
10 11 12 13 14 15 16 17
一般的代碼應該使用iterator與成員函數*.begin() , *.end()只有做加法一樣,
1+9 2+9 3+9 4+9 5+9 6+9 7+9 ......迭代器算術

所以基本上我需要實際的代碼,這個運算!我嘗試了很多方法,但沒有什麼會在我的腦海中,只有.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;  
} 

謝謝您的時間。

+0

C++ Primer由誰?許多書有類似的標題。 – Potatoswatter

+1

現在,您將使用其前一個元素而不是最後一個元素添加當前元素。 –

+1

@AlexGreat:那麼你如何得到最後一個元素的價值呢? –

回答

0

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

序列中的最後一個元素是numset.back()。所以請嘗試*it + numset.back()。而且不需要從第二個元素開始,因爲您確實想要打印第一個元素和最後一個元素的總和。如果你不想打印最後一個元素與自身的總和,你應該停止在end() - 1,但是。

+0

結果完全不是我想要的!它沒有給我所有元素的總和 – AlexGreat