我对程序有一些问题,也许有人可以帮助我。所以:
int main() {
std::string col = "maly tekst"
for_each(/* FILL IN #2*/ f());
copy(/*FILL IN #3*/);
std::cout << col; }
输出应为:TSKET YLAM
我知道我需要使用Functor,所以我做了这样的事情:
#include <iostream>
#include <string>
#include <algorithm>
class f{
public:
void operator() (char &k)const
{
k = toupper(k);
}
};
int main(){
std::string col = "maly tekst";
for_each(col.begin(),col.end(),f());
copy(col.rbegin(),col.rend(),back_inserter(col));
std::cout << col << std::endl;
}
但是现在当我运行它时它返回:
MALY TEKSTTSKET YLAM
有人可以指出我正确的方法,或者帮助我使用这个示例程序吗?
谢谢
E:忘了添加我只能在main中使用这个功能,我不能添加任何新的
答案 0 :(得分:2)
std::for_each(col.begin(),col.end(),f()); // as before
std::reverse(col.begin(), col.end());
答案 1 :(得分:0)
如果无法使用std::reverse
,则无法使用std :: copy替换原始容器。要使用reverse order
打印col,另一种方法是直接将col
复制到stream iterator
。
for_each(col.begin(),col.end(),f());
std::copy(col.rbegin(), col.rend(), std::ostream_iterator<char>(std::cout, ""));