Ç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::vectorve std::array; ve hangi derleyici doğrudur?
std::sort yol açan bazı uzmanlıkları olabilir mi (zaten ve gibi )? std::beginstd::end
namespace stdbasit 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.