2

私はプログラムに問題があります。多分誰かが私を助けることができます。それで:

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:この関数はメインでしか使用できないことを追加するのを忘れました。新しいものは追加できません。

4

2 に答える 2

2
std::for_each(col.begin(),col.end(),f()); // as before
std::reverse(col.begin(), col.end());
于 2013-01-23T00:03:33.723 に答える
0

を使用できない場合は、std::copyを使用して元のコンテナを置き換えることはできませんstd::reverse。colを使用して印刷するにはreverse order、別の回避策はに直接コピーcolすることです。stream iterator

for_each(col.begin(),col.end(),f());
std::copy(col.rbegin(), col.rend(), std::ostream_iterator<char>(std::cout, ""));
于 2013-01-23T01:03:23.683 に答える