호출 할 때 std::sort()
A의 std::array
:
#include <vector>
#include <array>
#include <algorithm>
int main() {
std::vector<int> foo{4, 1, 2, 3};
sort(begin(foo), end(foo));
std::array<int, 4> foo2{4, 1, 2, 3};
sort(begin(foo2), end(foo2));
}
GCC와 그 소리 복귀상의 종류에 오류가 두 std::array
- 그 소리가 말한다
오류 : 선언되지 않은 식별자 '정렬'사용; 'std :: sort'를 의미 했습니까?
std::sort(begin(foo2), end(foo2))
문제 를 해결하기 위해 변경 .
MSVC는 작성된대로 위의 코드를 컴파일합니다.
std::vector
와 사이의 치료 차이가 왜 std::array
; 어떤 컴파일러가 맞습니까?
@Someprogrammerdude 단순히 VC ++의 stdlib에있는 모든 컨테이너
—
François Andrieux
namespace std
가 단순한 포인터 유형이 작동하는 경우에도 정의 된 클래스 유형 반복자를 사용 하는 것입니다. 오버런 및 기타 일반적인 오류를 감지하기 위해 디버그 빌드 검사를 삽입하는 것입니다.
sort(...
->std::sort(...
. 나는 생각 ADL (인수 종속 조회가) 당신을 트립 무슨이다. 또는 추론 가이드. 어쨌든; 항상 호출하는 기능을 검증하십시오.