Inisialisasi vektor vektor di C++ vs2010

pemrograman


Halo semua,

Saya ingin menginisialisasi vektor vektor di c++ vs2010
Saya mencoba mendeklarasikan tabel ganda

ganda dTabel[3][4] = { 1,2,3,4,
5,6,7,8,
9,0,-1,-2};

dan kemudian mendeklarasikan vektor dari vektor:
menggunakan namespace std;
vektor < vektor> vOfvs (&dtable[0][0]&dTabel[0][0]+63)

Saya mendapat peringatan konversi c4244 dari double ke unassigned __int64
dan kesalahan linker yang mengatakan bahwa dTable sudah ditentukan

Apa sintaks yang benar untuk ini di vs2010?

Terima kasih!

Apa yang saya coba:

Mencari di Google
Jalankan di editor yang berbeda

Solusi 1

Ada cara langsung tanpa terlebih dahulu mendeklarasikan vektor pembantu:

vector<vector<double> > myVector 
    { 
        /* Element 0 */
        {1, 2, 3, 4},  
        
        /* Element 1 */
        {5, 6, 7, 8},  
        
         /* Element 2 */
        {9, 10, 11, 12}  
    }; 

Lebih detailnya Anda dapat menemukannya: Vektor 2D Dalam C++ Dengan Ukuran Buatan Pengguna – GeeksforGeeks[^]

Solusi 2

Masalahnya mungkin Visual Studio 2010 tidak mendukung daftar inisialisasi C++11 untuk vektor. Meskipun saya tidak dapat menguji dengan VS2010, saya dapat membayangkan tugas ini dapat diselesaikan dengan fungsi templat. Di sini, vektor dua dimensi diinisialisasi dengan nilai yang telah ditentukan sebelumnya.

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);
    }
}

Ini kemudian dapat digunakan sebagai berikut:

C++
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);

コメント

タイトルとURLをコピーしました