Çağrılırken std::sort()
bir on 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));
}
Hem gcc hem de clang, sıralamadaki bir hatayı döndürür std::array
- clang diyor
hata: bildirilmemiş 'sort' tanımlayıcısının kullanımı; Şunu mu demek istedin 'std :: sort'?
İçin değiştirme std::sort(begin(foo2), end(foo2))
sorunu düzeltmeleri.
MSVC yukarıdaki kodu yazılı olarak derler.
Neden tedavisinde arasındaki fark std::vector
ve std::array
; ve hangi derleyici doğrudur?
std::sort
yol açan bazı uzmanlıkları olabilir mi (zaten ve gibi )? std::begin
std::end
namespace std
basit bir işaretçi türünün işe yarayacağı yerlerde bile tanımlanan sınıf türü yineleyicileri kullanması basittir. Bunun taşmaları ve diğer yaygın hataları tespit etmek için hata ayıklama-yapı denetimleri eklemek olduğuna inanıyorum.
sort(...
->std::sort(...
. Ben tahmin ADL (argüman bağımlı arama) sizi açma ne olduğunu. Bu veya kesinti rehberleri. Her durumda; her zaman aradığınız işlevleri nitelendirin.