Tôi có một chức năng,C++ Đối số mặc định cho vector <int> &?
void test(vector<int>& vec);
Làm thế nào tôi có thể thiết lập các tham số mặc định cho vec? Tôi đã thử
void test(vector<int>& vec = vector<int>());
Nhưng có một cảnh báo "mở rộng không chuẩn được sử dụng: 'đối số mặc định': chuyển đổi từ 'std :: vector < _Ty>' thành 'std :: vector < _Ty> &"
Có cách nào tốt hơn để thực hiện việc này không? Thay vì
void test() {
vector<int> dummy;
test(dummy);
}
Kính trọng, Voteforpedro
+1 nhưng tôi nghĩ rằng nó nên được chỉ ra rằng 'thử nghiệm' nói chung sẽ không được thread-an toàn là nó để sửa đổi này 'DEFAULT_VECTOR'. Nó có thể là tẻ nhạt, nhưng tôi khuyên bạn nên viết hai chức năng cho các nhu cầu như vậy (một có thể tái sử dụng khác): void test() {vector temp; kiểm tra (temp); } –
stinky472
@ stinky472: Cảm ơn, đã cập nhật câu trả lời của tôi. – ereOn
Như một lưu ý phụ, có một cách hacky để nhận được một tham chiếu đến một tạm thời nếu bạn có thể sử dụng một số phương pháp trên sau đó trả về một tham chiếu như vậy cho chính nó ... ví dụ 'operator ='. Vì vậy, 'kiểm tra void (vector & vec = vector () .operator = (vector ()));' nên hoạt động (tuổi thọ của tạm thời không bị ảnh hưởng ở đây và sẽ vẫn đủ để xử lý cuộc gọi). Nhưng xin đừng làm điều đó :) –