[ad_1]
Chào mọi người,
Tôi muốn khởi tạo một vectơ vectơ trong C++ vs2010
Tôi đã cố gắng khai báo một bảng đôi
dBảng đôi[3][4] = { 1,2,3,4,
5,6,7,8,
9,0,-1,-2};
và sau đó khai báo một vectơ của vectơ:
sử dụng không gian tên std;
vector < vector
Tôi nhận được cảnh báo chuyển đổi c4244 từ gấp đôi sang chưa được chỉ định __int64
và một lỗi liên kết cho biết dTable đã được xác định
Cú pháp đúng cho điều này trong vs2010 là gì?
Cảm ơn!
Những gì tôi đã thử:
Tìm kiếm nó trên Google
Chạy trong trình chỉnh sửa khác
Giải pháp 1
Có cách trực tiếp mà không cần khai báo vectơ trợ giúp trước:
vector<vector<double> > myVector { /* Element 0 */ {1, 2, 3, 4}, /* Element 1 */ {5, 6, 7, 8}, /* Element 2 */ {9, 10, 11, 12} };
Thêm chi tiết bạn có thể tìm thấy cô ấy: Vector 2D trong C++ với kích thước do người dùng xác định – GeeksforGeeks[^]
Giải pháp 2
Vấn đề có lẽ là Visual Studio 2010 không hỗ trợ danh sách khởi tạo C++11 cho vectơ. Mặc dù tôi không thể kiểm tra bằng VS2010, nhưng tôi có thể tưởng tượng rằng tác vụ này có thể được giải quyết bằng hàm mẫu. Ở đây, vectơ hai chiều được khởi tạo với các giá trị được xác định trước.
template<typename T, size_t N, size_t M> void initializeVector(std::vector<std::vector<T>>&targetVector, const T(&sourceArray)[N][M]) { for (size_t i = 0; i < N; ++i) { std::vector<T> row; for (size_t j = 0; j < M; ++j) { row.push_back(sourceArray[i][j]); } targetVector.push_back(row); } }
Điều này sau đó có thể được sử dụng như sau:
std::vector<std::vector<double>> myArray; const double predefinedValues[3][3] = { {1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0} }; initializeVector(myArray, predefinedValues);
[ad_2]
コメント