Igo*_*evo 2 c++ arrays sorting visual-c++ c++11
我有以下代码:
int main()
{
int intArr[] = { 1,5,3 };
//auto f = [](auto a, auto b) {return a < b;};
//std::sort(intArr, intArr + 2, f);
std::sort(intArr, intArr + 2);
for (int& temp : intArr)
cout << temp << endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,输出未排序(例如输出1 5 3).std::sort与lambda一起使用时的结果相同.是什么导致了这种行为?
我正在使用Visual C++编译器(Visual Studio 2015).
在采用范围的STL算法中,如果要提供整个范围,则必须提供一个结尾的元素,而不是范围本身的结尾,因此在您的情况下:
std::sort(intArr, intArr + 3);
Run Code Online (Sandbox Code Playgroud)
要么
std::sort(intArr, intArr + sizeof(intArr) / sizeof(int));
Run Code Online (Sandbox Code Playgroud)
甚至更好:
std::sort(std::begin(intArr), std::end(intArr));
Run Code Online (Sandbox Code Playgroud)