- 締切済み
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; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kawais070_1
- ベストアンサー率55% (517/934)
gcc9.2はC++17の機能を全て持っているわけではなさそう。 gitのgccのソースを見ると、reduceが入っているので、次のバージョンのgccからは使えるでしょう。 (gcc10になるのかな?)
- kawais070_1
- ベストアンサー率55% (517/934)
reduceはC++17の機能らしいですね。 C++17の機能はデフォルトでは使えないようで、コマンドライン引数に-std=c++1zオプションを付けると有効になるらしいです。詳しくは以下を。 https://www.neuralsparrow.com/entry/2017/04/12/002201
お礼
回答ありがとうございます -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());
お礼
わざわざ確認してくれたのですね。 ありがとうございました。