2017-05-30 7 views
0

transformを使用して数値のリストを2で割り算するにはどうすればよいですか?私はこのコードがそれをするだろうと思ったが、それは全体のリストのために番号1と2を分けるだけなので、これを完全に忘れてしまったに違いない。誰か助けてくれますか?あります:)C++はtransform(bind)を使用して数値を分割します

list<T> v(5, 1); 
list<T> d; 
d.resize(v.size()); 

transform(v.begin(), v.end(), d.begin(), bind(divides<T>(), placeholders::_1, 2)); 
cout << fixed << setprecision(2); 
for (list<T>::iterator i = d.begin(); i != d.end(); i++){ 
    std::cout << *i << endl; 
} 
system("pause"); 
+0

独立しsystem("PAUSE");に似なく、プラットフォームですさて、あなたは 'すべてが整数で、5つの要素を持つリスト' v'を初期化します1 'となる。それでは、もう何を期待しましたか? –

+0

さて、私の間違いは、プレースホルダー:: _ 1は何らかの定数であると思っていたと思います(_1がxのinstedであるところを読んでいますが、私はそれを忘れてしまいます)。だから、私はそれを変えるために何ができますか?私はplacehoders以外の何かが必要だと思いますか? – StudentLerning

+0

'placeholders :: _ 1'は最初の引数のプレースホルダです。正しく使用しています。私は5つの '1 'のリストとして変数' v'の構築について話しています。リスト 'v'を出力すると、それはすべて' 1'であることがわかります。もちろん結果はすべての部門が「1/2」になることになります。この問題は、 'transform'や' bind'などの使用方法ではなく、問題のソースデータです。 –

答えて

1
  1. How to create a Minimal, Complete, and Verifiable example
  2. はあなたの例では、ベクター上のリストを使用する理由はありません。
  3. あなたがC++ 98にバインドしている場合を除き、あなたはtransform(...,..., [](T& val) { val /= 2; });
  4. std::cin.ignore()を行うことができます
関連する問題