3

我正在尝试将boost::variant2D 矢量复制到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 中的字符串吗?

4

1 回答 1

2

错误消息是正确的,不幸的是,C++ AMP 不支持字符串或字符。支持的最小数据类型是 int。有一些技巧/技术可以解决这个限制,它们涉及使字符变大为整数。

这里有一篇关于如何做到这一点的好文章:C++ AMP: It's got character, but no char!另一个是带有 C++ AMP的源代码字符串搜索示例。

于 2013-06-27T07:04:38.777 回答