0 k thích
40 đã xem
trong Kiến thức CNPM bởi (260 điểm)
Em có 1 câu hỏi là như vậy.

nếu như mình khai báo

int *a = new int [10];

và mình muốn 10 giá trị của mảng a đó là 0 hết thì phải làm sao ạ ?

nhưng không sử dụng vòng for chạy rồi gán từng phần tử trong mảng = 0.

và nếu mở rộng ra có thể dùng cho template luôn được không ạ ?

1 Câu trả lời

+4 k thích
bởi (4.8k điểm)

int* là con trỏ int, chứ không phải là một object nên không có "constructor", đúng hơn là dùng "initialization". Nếu bạn muốn gán nguyên mảng bằng 0 có thể viết đơn giản như sau:

int *a = new int[10] {};

Tuy nhiên để gán nguyên mảng với giá trị khác thì bạn có thể dùng std::fill_n
http://www.cplusplus.com/reference/algorithm/fill_n/
Chẳng hạn gán 7 giá trị đầu là -3: std::fill_n(a, 7, -3)

Template là để cài đặt class/hàm có các thuộc tính/tham số có kiểu khác nhau nhưng được xử lý như nhau. Không có liên quan gì đến việc khởi tạo các kiểu mảng C cả (dùng 2 cách mình nêu trên hoặc dùng vòng lặp). Còn đối với các object thuộc các container class của C++ STL, đều có sẵn constructor để khởi tạo nguyên container với một giá trị nào đó, chẳng hạn:
std::list<int> myList(7, -3); //Tạo 1 linked list với 7 phần tử -3

bởi (260 điểm)
em cảm ơn anh
bởi (4.8k điểm)
Happy to be of help! ^^
Chào mừng đến với Q&A FIT. Bạn có thể đặt câu hỏi và nhận được câu trả lời từ các bộ phận hỗ trợ và những thành viên khác tại Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia TP.HCM. Bạn hãy đăng nhập bằng tài khoản Google để gửi hoặc trả lời các câu hỏi.
...