std::truncateやstd::reduceは何故無いのか。
いや、切り詰めの奴があってもいいと思うんですけどねぇ。
いや、上記のコードあっている筈なんだけど、なんかバグがありそうな気もしなくもない。
template<class T>
void truncate(T &x,size_t siz){
if(x.size() < siz){
throw std::runtime_error("argument over");
}
T::size_type c = x.size() - siz;
for(T::size_type i=0;i<c;i++)
{
x.erase(x.end() - 1);
}
}
///STL container truncate as much as possible
template<class T>
bool truncate_amap(T &x,size_t siz){
for(size_t i=0;i<siz;i++)
{
if(x.empty()){
return false;
}
x.erase(x.end() - 1);
}
return true;
}