看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux G++ 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <list> using namespace std; main() { int count =1; list<int> L; L.push_back(0); L.push_front(0); L.insert(++L.begin(),2); L.push_back(5); L.push_back(6); L.sort(); list<int>::iterator i; for(i=L.begin(); i != L.end(); ++i) { cout << "第" << count << "個 "<< *i << " "<< endl; count++; } return 0; } 我們都知道用 iterator去觀看list所有的元素。 也可以用 L.front();去看第一個元素, 但有什麼方法可以看第二個元素? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.89.77 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449667965.A.175.html ※ 編輯: hardware (140.117.89.77), 12/09/2015 22:00:30
bibo9901: *( L.begin() + 1 ) 12/09 22:08
jaid: 你想++i不就是在加iterator嗎 index直接加上去就好了 12/09 23:28
Caesar08: 你既然知道iterator,那就應該知道list的iterator是 12/09 23:55
Caesar08: bidirectional iterator,那就應該知道他只能從begin() 12/09 23:56
Caesar08: 往後面取一個,才有辦法拿到第二個元素才對 12/09 23:56
iterator是去查看元素,如果我今天要把他儲存下來呢? for(i=L.begin(); i != L.end(); ++i) { cout << "第" << count << "個 "<< *i << " "<< endl; sum = *i; count++; } 我用這樣子為什麼不行?
stupid0319: 可以的話,自己的容器自己寫會比較好操作吧 12/10 00:41
kwpn: 用iterator就做的到的事,幹嘛浪費時間自己寫容器 12/10 00:54
hardware: 1F ,你說的方法好像不行耶 12/10 09:34
※ 編輯: hardware (140.117.89.77), 12/10/2015 09:38:10
remizu: 看你寫sum應該是想要算總和吧 "="是指派給sum 不是加上去 12/10 09:46
抱歉,寫錯了應該是 sum = sum + *i; 謝謝~
aiwhat: 查了一下 std::advance 可能是你要的 12/10 10:09
※ 編輯: hardware (140.117.89.77), 12/10/2015 10:20:23
hardware: 感謝樓上~ 12/10 10:20
Caesar08: 個人認為next比advance還好用,不過它屬於C++11的部分 12/10 12:24