我将尝试编译一个使用std::make_reverse_iterator的C++程序,但是我得到了标题错误。这个参考文献说自C++14起确实支持该函数,因此我添加了标志-std=c++14,但仍然不起作用。我已经挖掘了一段时间,但无法弄清楚为什么会发生这种情况。有任何想法吗?我的编译器版本是g++ 4.9.2。
以下是一个简单的程序(取自上述参考文献),用于编译它的命令以及程序的输出。
test.cpp:
以下是一个简单的程序(取自上述参考文献),用于编译它的命令以及程序的输出。
test.cpp:
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
int main() {
auto v = std::vector<int>{ 1, 3, 10, 8, 22 };
std::sort(v.begin(), v.end());
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ", "));
std::cout << '\n';
std::copy(
std::make_reverse_iterator(v.end()),
std::make_reverse_iterator(v.begin()),
std::ostream_iterator<int>(std::cout, ", "));
}
编译器:
g++ -std=c++14 test.cpp -o test
输出:
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: ‘make_reverse_iterator’ is not a member of ‘std’
std::make_reverse_iterator(v.end()),
^
test.cpp:16:9: error: ‘make_reverse_iterator’ is not a member of ‘std’
std::make_reverse_iterator(v.begin()),