簡體   English   中英

如何添加char * /轉換為std :: vector <uint8_t[]>

[英]How to add char*/convert to std::vector<uint8_t[]>

我有一個std::vector<uint8_t[1115]> ,我想在其中存儲一個char* 我不明白如何將char *強制轉換為向量。 也許它很愚蠢,但是我嘗試了這個:

char* myCharArray = new char[1115]; 
std::vector<uint8_t[1115]> myVector;
myVector.push_back(reinterpret_cast<uint8_t*>(myCharArray));

我不明白為什么這行不通。 錯誤如下:

error: no matching function for call to ‘std::vector<unsigned char [1115]>::push_back(uint8_t*)’ 

您有兩個問題:

  1. vector的元素必須是可復制構造和可分配的,但數組不是。 這意味着您不能合法地擁有數組vector 如果您使用的是C ++ 11或更高版本,則可以使用std::vector<std::array<uint8_t, 1115>> std::array類型是數組周圍的可復制包裝器。

  2. push_back只需復制對象即可將其插入向量的對象。 您不能將char* (或任何其他點)復制到數組。 但是,如果遵循我在(1)中的建議,則可以完全避免使用指針,而只需將其std::array<uint8_t, 1115> myCharArray;

如果您無法使用std::array則可以使用std::vector<std::vector<uint8_t>> ,只需確保內部向量的大小正確即可。

您可能會很感興趣, 為什么大多數C ++中可能不需要原始指針或new指針

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM