2017-09-28 3 views
-1

Ich habe ein kleines Stück Code für std::for_each_n Schleife. Ich versuchte es auf eingebauten Coliru Compiler GCC C++ 17 mit folgendem Befehl ausführen:'for_each_n' ist kein Mitglied von 'Std' in C++ 17

g++ -std=c++1z -O2 -Wall -pedantic -pthread main.cpp && ./a.out 

Aber Compiler gibt einen Fehler, dass „‚for_each_n‘ist kein Mitglied von‚std‘“.

Mein Code ist unten, der von cppreference kopiert wird.

#include <algorithm> 
#include <iostream> 
#include <vector> 

int main() 
{ 
    std::vector<int> ns{1, 2, 3, 4, 5}; 
    for (auto n: ns) std::cout << n << ", "; 
    std::cout << '\n'; 
    std::for_each_n(ns.begin(), 3, [](auto& n){ n *= 2; }); 
    for (auto n: ns) std::cout << n << ", "; 
    std::cout << '\n'; 
} 

Also, warum bekomme ich einen Fehler?

+1

ist Compiler-Unterstützung C++ 17? – user463035818

+0

@ tobi303 Ich verwendete http://coliru.stacked-crooked.com/ Compiler – rsp

+0

Und wird diese besondere Funktion unterstützt? – stefaanv

Antwort

8

Es ist nichts falsch mit Ihrem Code. Das Problem ist, dass libstdC++ std::for_each_n noch nicht unterstützt. Wenn wir header betrachten, die std::for_each definiert, sehen wir, dass es nicht existiert.

Wenn Sie jedoch Zugriff auf libC++, deren Header aus dem official mirror nicht implementiert std::for_each_n

Verwandte Themen