Đối số thứ hai cho that constructor là giá trị để khởi tạo. Ngay bây giờ bạn đang nhận được 4 vectơ được xây dựng mặc định. Để làm rõ với một ví dụ 1D đơn giản:
// 4 ints initialized to 0
vector<int> v1(4);
// *exactly* the same as above, this is what the compiler ends up generating
vector<int> v2(4, 0);
// 4 ints initialized to 10
vector<int> v3(4, 10);
Vì vậy, bạn muốn:
vector< vector<int> > bar(4, vector<int>(4));
// this many^ of these^
Điều này tạo ra một vector của vector ints, khởi tạo để chứa 4 vectơ được khởi tạo để chứa 4 ints, khởi tạo 0. (Bạn có thể chỉ định giá trị mặc định cho int, nếu muốn.)
Miệng đầy nhưng không quá cứng. :)
Đối với một cặp:
typedef std::pair<int, int> pair_type; // be liberal in your use of typedef
typedef std::vector<pair_type> inner_vec;
typedef std::vector<inner_vec> outer_vec;
outer_vec v(5, inner_vec(5, pair_type(1, 1)); // 5x5 of pairs equal to (1, 1)
// this many^of these^
//this many^ of these^
Các ưu non trong tôi hét lên khi nhìn thấy dòng cuối cùng này của mã ... – sbk
gì nếu thay vì int, tôi muốn làm một đôi. Có cách nào tôi có thể khởi tạo tất cả các cặp chứa 0,0? –
zebraman
@zebra: Các cặp sẽ tự khởi chạy ints thành 0. Nhưng để hoàn thành, tôi đã chỉnh sửa bài đăng của mình. – GManNickG