我正在尝试将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?
答案 0 :(得分:2)
错误消息正确C ++ AMP不支持字符串或字符。支持的最小数据类型是int。有一些技巧/技巧来解决这个限制,他们涉及将字符更大的内容。
有一篇很好的文章介绍了如何在此处执行此操作:C++ AMP: It's got character, but no char!,另一篇文章包含源代码String search sample with C++ AMP。