【问题标题】:vector and c array in context of vecLibvecLib 上下文中的向量和 c 数组
【发布时间】:2014-02-01 06:44:46
【问题描述】:

我希望在 Accelerate Framework 中使用 vecLib。我注意到数据类型被定义为“向量”。如何在运行时从 c 数组初始化它?

编辑:在 Zaph 的帮助下,我的问题简化为这个。

【问题讨论】:

  • @trojanfoe 我不认为这是一个 c++ 向量...
  • @Zaph 如何在声明后从 c 数组初始化它?我无法执行myVector[i] = theArray[i]; 之类的操作,其中myVectorvUInt32theArray 是4 个无符号32 位整数数组,而我可以执行myVector = {14,32,55,42} 之类的操作
  • 基本上,我希望在运行时初始化它们。

标签: objective-c cocoa accelerate-framework


【解决方案1】:

如果您浏览所有标题,我相信有更好的方法,但这似乎有效:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2013-07-20
    相关资源
    最近更新 更多