2014-01-13 22 views
0

我希望在Accelerate Framework中使用vecLib。我注意到數據類型被typedefed爲'vector'。如何在運行時從c數組中初始化它?vecLib中的向量和c數組

編輯:在Zaph的幫助下,我的問題簡化爲此。

+0

C++'std :: vector'? – trojanfoe

+1

@trojanfoe我不認爲這是一個C++向量... – Roshan

+0

@Zaph如何在聲明後從c數組初始化它?我不能像'myVector [i] = theArray [i];''myVector'是'vUInt32'這樣的東西,'theArray'是4個無符號32位int的數組,而我可以像'myVector = {14,32,55,42}' – Roshan

回答

0

我敢肯定有,如果你通過所有的頭涉水更好的方法,但這似乎工作:

vUInt32 vUI; 
    uint32_t *vp = (uint32_t *)&vUI; 
    vp[0] = 0; 
    vp[1] = 1; 
    vp[2] = 2; 
    vp[3] = 3; 

實例另外:

uint32_t *vp; 
vUInt32 vUI1; 
vp = (uint32_t *)&vUI1; 
vp[0] = 0; 
vp[1] = 1; 
vp[2] = 2; 
vp[3] = 3; 
NSLog(@"vUI1: %d, %d, %d, %d", vp[0], vp[1], vp[2], vp[3]); 

vUInt32 vUI2; 
vp = (uint32_t *)&vUI2; 
vp[0] = 4; 
vp[1] = 5; 
vp[2] = 6; 
vp[3] = 7; 
NSLog(@"vUI2: %d, %d, %d, %d", vp[0], vp[1], vp[2], vp[3]); 

vUInt32 vUI3 = vU64AddS(vUI1, vUI2); 
vp = (uint32_t*)&vUI3; 
NSLog(@"vUI3: %d, %d, %d, %d", vp[0], vp[1], vp[2], vp[3]); 

的NSLog輸出:
vUI1: 0,1,2,3
vUI2:4,5,6,7
vUI3:4,6,8,10

幫助函數可以這樣創建:

void vUInt32With4Values(uint32_t value0, uint32_t value1, uint32_t value2, uint32_t value3, vUInt32 *vUI) { 
    uint32_t *vp = (uint32_t *)vUI; 
    vp[0] = value0; 
    vp[1] = value1; 
    vp[2] = value2; 
    vp[3] = value3; 
} 

vUInt32 vUI1; 
vUInt32With4Values(0, 1, 2, 3, &vUI1);