เวกเตอร์ C++ ของเวกเตอร์

ฉันต้องสร้าง std::vector ที่มีเวกเตอร์เป็น Eigen::Vector2d นี่คือวิธีที่ฉันประกาศ:

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

และฉันพยายามผลักดันองค์ประกอบบางอย่างที่ฉันสร้างขึ้นกลับไปเช่นนั้น:

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

แต่สิ่งนี้ทำให้ฉัน:

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

โปรดบอกฉันว่ามีข้อมูลที่ขาดหายไปเพื่อค้นหาสาเหตุของปัญหานี้หรือไม่


person kamel kamelus    schedule 20.07.2015    source แหล่งที่มา
comment
ยินดีต้อนรับสู่ StackOverflow เป็นเพียงการเดาสุ่ม แต่มีการประกาศ Vector2d ด้วยการตั้งค่าการจัดตำแหน่งเฉพาะที่อาจไม่รับประกันเมื่อใส่ลงใน std::vector   -  person Remy Lebeau    schedule 21.07.2015
comment
ดูคำถามนี้   -  person Beta Carotin    schedule 21.07.2015


คำตอบ (1)


คุณอาจยังไม่ได้อ่านเอกสารประกอบ:

การใช้คอนเทนเนอร์ STL กับประเภท Eigen ที่สามารถเวกเตอร์ขนาดคงที่ได้ หรือคลาสที่มีสมาชิกของประเภทดังกล่าว จำเป็นต้องดำเนินการสองขั้นตอนต่อไปนี้:

  • ต้องใช้ตัวจัดสรรแบบ 16 ไบต์ Eigen จัดให้มีอันที่พร้อมใช้งาน: aligned_allocator

  • หากคุณต้องการใช้คอนเทนเนอร์ std::vector คุณต้อง #include ‹ Eigen/StdVector ›.

ปัญหาเหล่านี้เกิดขึ้นเฉพาะกับประเภทและโครงสร้าง Eigen ที่สามารถปรับขนาดเวกเตอร์ได้ซึ่งมีวัตถุ Eigen ดังกล่าวเป็นสมาชิกเท่านั้น สำหรับ Eigen ประเภทอื่นๆ เช่น Vector3f หรือ MatrixXd ไม่จำเป็นต้องมีการดูแลเป็นพิเศษเมื่อใช้คอนเทนเนอร์ STL

(เน้นของฉัน)

person Tas    schedule 20.07.2015