• 締切済み

C++のreduce

C++のreduceを使おうとすると error: 'reduce' was not declared in this scope となってしまいます reduceを使うにはどうしたらよいでしょうか? OSはMac GCCのバージョンは9.2.0_3となってます よろしくおねがいします コード #include <iostream> #include <vector> #include <numeric> using namespace std; int main() { const vector<int> v = {1, 2, 3}; int sum = reduce(v.begin(), v.end()); cout << sum << endl; }

みんなの回答

回答No.2

gcc9.2はC++17の機能を全て持っているわけではなさそう。 gitのgccのソースを見ると、reduceが入っているので、次のバージョンのgccからは使えるでしょう。 (gcc10になるのかな?)

manamick
質問者

お礼

わざわざ確認してくれたのですね。 ありがとうございました。

回答No.1

reduceはC++17の機能らしいですね。 C++17の機能はデフォルトでは使えないようで、コマンドライン引数に-std=c++1zオプションを付けると有効になるらしいです。詳しくは以下を。 https://www.neuralsparrow.com/entry/2017/04/12/002201

manamick
質問者

お礼

回答ありがとうございます -std=c++1zや-std=c++17を付けてもやはり変わらないんです オプションの位置関係に問題があるのかとオプションの位置も変えてみましたがエラーは違いますがやはりエラーが出ます g++ test.cpp -g -std=c++17 -o test error: no matching function for call to 'reduce(std::vector<int>::const_iterator, std::vector<int>::const_iterator)' 9 | int sum = reduce(v.begin(), v.end());

関連するQ&A