ฉันพยายามที่จะใช้std::vector
เป็นchar
อาร์เรย์
ฟังก์ชั่นของฉันใช้เป็นตัวชี้โมฆะ:
void process_data(const void *data);
ก่อนที่ฉันจะใช้รหัสนี้:
char something[] = "my data here";
process_data(something);
ซึ่งทำงานได้ตามที่คาดหวัง
แต่ตอนนี้ฉันต้องการพลังของstd::vector
ฉันจึงลองใช้รหัสนี้แทน:
vector<char> something;
*cut*
process_data(something);
คำถามคือฉันจะส่ง char vector ไปยังฟังก์ชันของฉันได้อย่างไรเพื่อให้ฉันสามารถเข้าถึงข้อมูล raw ของเวกเตอร์ได้ (ไม่ว่าจะเป็นรูปแบบใด - float ฯลฯ )
ฉันลองสิ่งนี้:
process_data(&something);
และนี่:
process_data(&something.begin());
warning C4238: nonstandard extension used : class rvalue used as lvalue
แต่มันกลับชี้ไปยังข้อมูลที่ไม่มีความหมายและหลังให้คำเตือน:
vector<bool>
ซึ่งเป็นข้อยกเว้นของคำตอบนี้ (และไม่มีหน่วยความจำที่ต่อเนื่องกันของbool
s)