1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| std::string s("Hello"); std::string f;
std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return std::toupper(c); }); std::cout <<"after transform, s: "<< s << std::endl;
std::transform( s.begin(), s.end(), std::back_inserter(f), [](unsigned char c) { return std::tolower(c); } ); std::cout << "after transform, f: " << f << std::endl;
std::copy( s.begin(), s.end(), std::back_inserter(f) ); std::cout << "after copy, f: " << f << std::endl;
|
back_inserter
属于插入迭代器,有三种插入迭代器(back_inserter,inserter,front_inserter),插入迭代器是指被绑定在一个容器上,可用来向容器插入元素的迭代器。 back_inserter
是创建一个使用push_back的迭代器
1 2 3
| vector<int> v={1,2,3,4,5,6}; vector<int> s; copy(v.begin(), v.end(), back_inserter(s) );
|
追加数据比较适合这种copy+back_inserter的做法。如果把新数据转为string,再用string的+运算符,这就太复杂了。数据很有可能是不以'\0'
结尾,这样的话将出现严重bug。