Tôi đã cố gắng ra một cái gì đó đơn giản như thế này:Làm thế nào để bạn vượt qua một mảng :: ::?
template<class T>
array insertionSort(array<T> arr) {
for (int index = 1; index < arr.size(); index++) {
for (int insertion = index; insertion > 0 && array[insertion - 1] > array[insertion]; insertion--) {
std::swap(array[insertion - 1], array[insertion]);
}
}
return arr;
}
void main() {
array<int, 10> mine = { 1, 0, 2, 9, 3, 8, 4, 7, 5, 6 };
array result = insertionSort<int>(mine);
cin.get();
}
Có vẻ như mảng đòi hỏi hai tham số kiểu (các type
cũng như size
), vì vậy làm thế nào để vượt qua nó đến và đi từ một chức năng mà không biết kích thước lên phía trước?
Làm cho kích thước tham số mẫu cũng vậy! Phải thừa nhận rằng, hầu hết thời gian bạn sẽ được tốt hơn đi qua vòng lặp và trừu tượng hóa các thuật toán của bạn từ bất kỳ đại diện cụ thể. Ví dụ, mã trên cũng nên làm việc cho 'std :: deque', 'std :: vector ', v.v. –
'Làm cho kích thước tham số mẫu', duh! Cảm ơn – sircodesalot
Đặt kích thước làm thông số mẫu như @ DietmarKühl đề xuất nhưng sử dụng nó trong vòng lặp đầu tiên thay vì arr.size(). –