Re: 請問STL的string這樣寫有錯誤嗎?
看板Programming作者b6s (http://b6s.blogspot.com)時間18年前 (2006/08/17 23:53)推噓10(10推 0噓 5→)留言15則, 4人參與討論串4/6 (看更多)
※ 引述《Killercat (殺人貓™)》之銘言:
: An input iterator addressing the first occurrence of the specified value in
: the range being searched. If no such value exists in the range, the iterator
: returned addresses the last position of the range, one past the final element.
: (這個基本上跟.end()的定義相同)
: 我比較不明白的是, .end()跟string::npos應該不會是一樣的直吧 +_+
: 不過我似乎也有string::npos當傳回值的印象...?
: 請問這大概是...?
抱歉,我沒說清楚一件事。您在原程式碼中用的和現在查到的這個是 <algorithm>
的 find(),我提到的則是 <string> 的 string::find(),
string::npos 是 ANSI C++ 規定的傳回值,配合 string::size_type
針對 VC,請見 http://msdn2.microsoft.com/en-us/library/tbbk8hs6.aspx
當您把 string 當 container 操作它的 iterator 時,
string::end 照理說和 string::npos 的語意相通。
但是,重點來了,迴圈裡有 seq+=inl[i];
表示 string 當 container 時的 iterator 不再安全了,
換句話說,seq.end() 不再保證有如您預期的行為。
所以,我會建議改用 string::find() 和 string::npos
當然,最好是重新考慮用別的寫法。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.105.131.104
※ 編輯: b6s 來自: 59.105.131.104 (08/17 23:56)
※ 編輯: b6s 來自: 59.105.131.104 (08/17 23:57)
推
08/18 00:24, , 1F
08/18 00:24, 1F
推
08/18 02:05, , 2F
08/18 02:05, 2F
推
08/18 02:12, , 3F
08/18 02:12, 3F
推
08/18 22:26, , 4F
08/18 22:26, 4F
→
08/18 22:27, , 5F
08/18 22:27, 5F
→
08/18 22:28, , 6F
08/18 22:28, 6F
推
08/19 02:15, , 7F
08/19 02:15, 7F
→
08/19 02:16, , 8F
08/19 02:16, 8F
→
08/19 02:16, , 9F
08/19 02:16, 9F
推
08/19 02:20, , 10F
08/19 02:20, 10F
推
08/19 15:06, , 11F
08/19 15:06, 11F
推
08/19 15:08, , 12F
08/19 15:08, 12F
→
08/19 15:09, , 13F
08/19 15:09, 13F
推
08/19 15:14, , 14F
08/19 15:14, 14F
推
08/23 19:09, , 15F
08/23 19:09, 15F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章