stringのpop_back()

C++のstringにはpush_back()はあるのにpop_back()がないので、大抵「s.resize(s.size()-1)」で代用していたのですが、これって効率いいのか疑問に思ってちょっと実験してみました。

msvc-8.0 gcc-mingw-3.4.2 cw-8.3 borland-5.8.2
s.resize(s.size()-1) 0.68 0.81 0.42 0.94
s.erase(s.size()-1) 0.65 0.64 0.53 0.95
s.erase(next(s.rbegin()).base()) 1.15 0.80 0.48 2.41
s.erase(prior(s.end())) 1.12 0.64 0.52 1.99

1000000個の文字列を10回ずつテストで、単位は秒です。
コンパイラとライブラリによって多少違いがありますが、平均的には「s.erase(s.size()-1)」の方がやや有利のようです。