2015-10-20 196 views
0

我想創建數組如何初始化數組

vector<BYTE[6]> cKey; 
BYTE keyTemp[6]; 
memset(keyTemp, 0xFF, sizeof(keyTemp)); // Key is FFF...FF 
cKey.push_back(keyTemp); 

但在功能的push_back的向量的向量,這顯示錯誤

Error C3074: an array can only be initialized with an initializer-list 

如何初始化數組的一個載體?

+0

發現重複:http://stackoverflow.com/q/4612273/3093378 – vsoftco

+0

@Manh樂:請閱讀'vsoftco'答案的談話,我鼓勵你用他的方式。如果沒有,請小心使用我的答案,並瞭解正在發生的事情。 –

回答

-1

我不知道是什麼數據類型,你用一個字節。這裏它是如何與int數組一起工作的。

#include <iostream> 
#include <vector> 

    int main() 
    { 
     std::vector<int*> cKey; 
     int keyTemp[8] = { 1,2,3,4,5,6,7,8 }; 
     cKey.push_back(keyTemp); 
     std::cout << cKey[0][6] << std::endl; 
     system("pause"); 
     return 0; 
    } 
2

你不能。基本類型std::vector使用必須是CopyAssignable,而數組不是。參考:http://en.cppreference.com/w/cpp/container/vector

一個解決方案是使用一個std::array作爲基礎型,而不是原始數組:

#include <iostream> 
#include <vector> 
#include <array> 

using BYTE = unsigned char; 

int main() 
{ 
    std::vector<std::array<BYTE, 6>> cKey; 
    std::array<BYTE, 6> keyTemp{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 
    cKey.push_back(keyTemp); 
} 
+0

我們不能將數組視爲指針。創建指針矢量有什麼問題? –

+0

@NayanaAdassuriya不,因爲內部向量做的事情就像'T some_value = T()','some_value'類型'T'是數組。所以它試圖將一個數組分配給另一個數組,這是不可能的。這就像你試圖做'int arr [10]; int arr_copy [10]; arr_copy = arr;/*錯誤在這裏* /' – vsoftco

+0

可以說數組只是一個指針。它可以分配一個指針到另一個。但問題是它從功能範圍出發,指針因內存中原有數組不存在而無效。你試圖說的是否正確? –