回答編集履歴

2

注釈追加

2016/05/08 15:43

投稿

catsforepaw
catsforepaw

スコア5938

test CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
 
7
7
  raccyさんとは別のやり方で作ってみました。文字列領域を若干多めに取ることになりますが、コピーは最小限だと思います。
8
+
9
+ ※reserveで領域サイズを決め打ちしているので、もしかしたら領域の節約になっているかもしれません。
8
10
 
9
11
 
10
12
 

1

cbeginとcendはC\+\+11からなので訂正

2016/05/08 15:43

投稿

catsforepaw
catsforepaw

スコア5938

test CHANGED
@@ -48,17 +48,17 @@
48
48
 
49
49
  str.reserve(targetStr.length());
50
50
 
51
- auto iter = targetStr.cbegin();
51
+ auto iter = targetStr.begin();
52
52
 
53
- while(iter != targetStr.cend())
53
+ while(iter != targetStr.end())
54
54
 
55
55
  {
56
56
 
57
- auto iter2 = std::find_if(iter, targetStr.cend(), IfCrLf());
57
+ auto iter2 = std::find_if(iter, targetStr.end(), IfCrLf());
58
58
 
59
59
  str.append(iter, iter2);
60
60
 
61
- iter = std::find_if(iter2, targetStr.cend(), IfNotCrLf());
61
+ iter = std::find_if(iter2, targetStr.end(), IfNotCrLf());
62
62
 
63
63
  }
64
64