- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在头文件中定义了一个 typedef:
typedef unsigned char BYTE;
我有以下代码:
BYTE rgbPlaintext[] = {0x00};
rgbPlaintext* = &vec[0];
vec
是一个由文件填充的 unsigned char
数组(没有问题)。我的问题是,上面的代码没有成功构建,它只是说 syntax error : '='
at the line rgbPlaintext* = &vec[0];
我怎样才能成功地将数组指向属于 typedef 基础类型的 vector 中的数组?
谢谢。
最佳答案
My issue is, the above code does not build successfully, all it says is
syntax error : '='
at the linergbPlaintext* = &vec[0];
您收到错误是因为编译器期望乘法运算符的右手参数,但却发现 =
不是乘法运算符的有效操作数。我觉得乘法不是你的本意。
How to convert a vector to an array of a typdef type
vector 不能转换为数组。
也许您的意思是将 vector 的内容复制到数组中。很简单:
std::copy(vec.begin(), vec.end(), rgbPlaintext);
但是,您需要小心。如果数组小于 vector ,则它会溢出并出现未定义的行为。
How can I successfully point the array to the array that is...
数组不指向任何东西,你也不能让它们指向任何东西。数组包含对象。
在这种情况下,数组 rgbPlaintext
包含一个值为 0x00
的元素。您可以使用我展示的方法将 vector 的内容复制到 rgbPlaintext
,但如果 vector 包含多个元素,复制将溢出。
How would one know the size of an array needed if the vector that the array is based off of is populated by a data file?
可以使用 std::vector::size()
获知 vector 的大小。但是大小在编译时是未知的,所以如果你打算将内容复制到一个数组并且不能限制最大大小,那么你就不能使用自动或静态分配的数组。您可以使用动态分配的数组,为此,我建议使用 std::vector
。
将 vector 复制到另一个很简单:
std::vector<BYTE> rgbPlaintext = vec;
只要 BYTE
与 decltype(vec)::value_type
的类型相同就可以了。一种类型是否是另一种类型的别名并不重要。
关于c++ - 如何将 vector 转换为 typedef 类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577652/
我是一名优秀的程序员,十分优秀!