khởi tạo một vectơ thành số không C ++ / C ++ 11


118

Tôi biết trong C ++ 11 họ đã thêm tính năng khởi tạo một biến thành 0 như vậy

double number = {}; // number = 0
int data{};  // data = 0

Có cách nào tương tự để khởi tạo một std::vectorđộ dài cố định cho tất cả các số không?


13
std::vector<int> vec(42);
avakar

9
btw, đây không phải là mới trong c ++ 11, bạn có thể làm điều này trong các phiên bản trước cũng
Balki

Câu trả lời:


220

Bạn không cần danh sách khởi tạo cho điều đó:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
Bạn không cần phải nói rõ số 0 phải không? chỉ vector(length)nên làm việc?
Daniel Gratzer

38
@jozefg: Có, nó sẽ hoạt động, mặc dù không có hại gì nếu nói rõ ràng về những gì bạn muốn mã làm.
ronag

1
@ronag Tôi đã viết câu trả lời của riêng mình vì rõ ràng trong trường hợp này không nhất thiết phải là một ví dụ tốt nếu int không phải là kiểu anh ấy đang làm việc. lập trình gereral có sẵn trong c ++ nhưng khi tôi được nhắc rằng bạn có thể bỏ qua hoàn toàn đối số, tôi đã loại bỏ câu trả lời của mình.
Johannes Schaub - litb

1
Một vectơ được khởi tạo tự động thành 0, trừ khi bạn chỉ định một số giá trị khác trong khai báo, như ronag đã hiển thị.
Nikos

Có thể khởi tạo lại tất cả các phần tử của Global Vector với ZEROvới một cách hiệu quả mà không cần sử dụng vòng lặp for ??????
Ankit Mishra

0

Việc khởi tạo một vectơ có struct, class hoặc Union có thể được thực hiện theo cách này

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.