在受限制的C ++ - AMP中不支持类型“字符串”

时间:2013-06-26 02:18:28

标签: c++-amp

我正在尝试将boost::variant 2D矢量复制到array<T,N>。使用指令copy(vectorName.begin(), extentName);。首先我得到错误,因为矢量类型是variant这是可以理解的。但是,在我将矢量类型更改为字符串后,我收到一个错误,即受限放大器不支持此类型。以下代码段是目标代码:

    const int x = 100;
    const int y = 100;

    concurrency::extent<2> eA(x,y), eB(x,y), eC(x,y);
    concurrency::array<string, 2> mA(eA), mB(eB), mC(eC);

    tCopyIn.Start();
    copy(masterList[0].begin(), mA);
    copy(masterList[1].begin(), mB);
    copy(masterList[2].begin(), mC);
    tCopyIn.Stop();

由此:

vector<vector<vector<boost::variant<string, float>>>> masterList;

有没有办法在C ++中处理字符串 - AMP?

1 个答案:

答案 0 :(得分:2)

错误消息正确C ++ AMP不支持字符串或字符。支持的最小数据类型是int。有一些技巧/技巧来解决这个限制,他们涉及将字符更大的内容。

有一篇很好的文章介绍了如何在此处执行此操作:C++ AMP: It's got character, but no char!,另一篇文章包含源代码String search sample with C++ AMP