C++ vektor vektor

Saya harus membuat std::vector yang berisi vektor Eigen::Vector2d. Inilah cara saya melakukan deklarasi:

std::vector< std::vector< Eigen::Vector2d > >  markingsPointSets;

dan saya mencoba untuk mendorong kembali beberapa elemen yang saya buat seperti itu:

Eigen::Vector2d firstMarkingPoint(markingPointA[0] + AB_perp[0] * .15, markingPointA[1] + AB_perp[1] * .15); // Don't mind to the value of this variable :p

markingsPointSets.at(i).push_back(firstMarkingPoint);

tapi ini memberi saya:

error c2719 formal parameter with __declspec(align('16')) won't be aligned

Tolong beri tahu saya jika ada informasi yang hilang untuk menemukan sumber masalah ini.


person kamel kamelus    schedule 20.07.2015    source sumber
comment
Selamat datang di StackOverflow. Hanya tebakan liar, tetapi apakah Vector2d dideklarasikan dengan pengaturan penyelarasan tertentu yang mungkin tidak dijamin saat memasukkannya ke dalam std::vector?   -  person Remy Lebeau    schedule 21.07.2015
comment
Lihat pertanyaan ini.   -  person Beta Carotin    schedule 21.07.2015


Jawaban (1)


Anda mungkin belum membaca dokumentasi:

Menggunakan kontainer STL pada tipe Eigen yang dapat divektorkan berukuran tetap, atau kelas yang memiliki anggota tipe tersebut, memerlukan dua langkah berikut:

  • Pengalokasi selaras 16 byte harus digunakan. Eigen memang menyediakan yang siap digunakan: aligned_allocator.

  • Jika Anda ingin menggunakan wadah std::vector, Anda perlu #include ‹ Eigen/StdVector ›.

Masalah ini hanya muncul pada tipe dan struktur Eigen yang dapat divektorisasi berukuran tetap yang memiliki objek Eigen sebagai anggotanya. Untuk tipe Eigen lainnya, seperti Vector3f atau MatrixXd, tidak diperlukan perawatan khusus saat menggunakan container STL.

(penekanan dari saya)

person Tas    schedule 20.07.2015