Với sự mới chuẩn C++ (có thể cần cờ đặc biệt để được kích hoạt trên trình biên dịch của bạn), bạn chỉ đơn giản có thể làm:
std::vector<int> v { 34,23 };
// or
// std::vector<int> v = { 34,23 };
Hoặc thậm chí:
std::vector<int> v(2);
v = { 34,23 };
Mở trình biên dịch không hỗ trợ tính năng này (danh sách trình khởi tạo) nhưng bạn có thể mô phỏng điều này bằng một mảng:
int vv[2] = { 12,43 };
std::vector<int> v(&vv[0], &vv[0]+2);
Hoặc, đối với trường hợp giao cho một vector hiện:
int vv[2] = { 12,43 };
v.assign(&vv[0], &vv[0]+2);
Giống như James Kanze đề nghị, đó là mạnh mẽ hơn để có chức năng cung cấp cho bạn sự khởi đầu và kết thúc của một mảng:
template <typename T, size_t N>
T* begin(T(&arr)[N]) { return &arr[0]; }
template <typename T, size_t N>
T* end(T(&arr)[N]) { return &arr[0]+N; }
Và sau đó bạn có thể làm điều này mà không cần phải để lặp lại kích thước trên tất cả:
int vv[] = { 12,43 };
std::vector<int> v(begin(vv), end(vv));
Nguồn
2012-01-18 07:24:59
Ngoài ra còn có [how-to khởi 'std :: vector const' như mảng ac] (http://stackoverflow.com/questions/231491/how- để khởi tạo-const-stdvectort-like-ac-array/254143). –
Shadow2531
Bạn nên bật hỗ trợ C++ 11 trong trình biên dịch của mình, ví dụ: 'g ++ -std = C++ 11 your_file.cc'. Sau đó, bạn có thể sử dụng hàm tạo danh sách khởi tạo của luồng (mục cuối cùng trong [tham chiếu này] (http://en.cppreference.com/w/cpp/container/vector/vector)) –
Không phải là một sự lừa đảo - câu hỏi khác là làm thế nào để làm điều đó với cũ c + +, câu trả lời của WTF là làm thế nào để làm điều đó bây giờ –