gpt4 book ai didi

arrays - 将数组初始化为固定长度数组的最佳方法是什么? (C++/CLI)

转载 作者:行者123 更新时间:2023-12-04 07:10:11 25 4
gpt4 key购买 nike

在托管 C++/CLI 中,我可以这样做 (1):

array<System::Byte>^ css_keycode = {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};

或(2):
array<System::Byte>^ css_keycode;
css_keycode = gcnew array<System::Byte>(6) {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};

但我显然不能做(3):
array<System::Byte>^ css_keycode;
css_keycode = {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};

即使我可以做到(4):
array<System::Byte>^ css_keycode = {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};
array<System::Byte>^ css_keycode_shadow;
css_keycode_shadow = css_keycode;

有没有更好的方法让我失踪?我想有一个简单/干净的方式来写这样的东西:
public ref class decoder {
array<System::Byte>^ css_keycode;
...
decoder(void) {
css_keycode = {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};
}
}

谢谢!

最佳答案

您必须区分初始化和分配。就像 Tobias Wärre 在他的帖子中所说的那样。
你不能做 (3) 因为 assingnment 不适用于初始化括号。
(4) 确实有效,因为您通常将新值分配给数组。
实际上以下应该工作:

public ref class decoder {
array<System::Byte>^ css_keycode;
...
decoder(void) {
array<System::Byte>^ css_keycode_tmp = {0x51, 0x67, 0x67, 0xc5, 0xe0, 0x00};
css_keycode = css_keycode_tmp;
}
}

这样分配的值就被复制到你的数组中。

编辑:
不幸的是没有 swap类似于 STL 容器的方法(至少我不知道),否则您可以将内容与临时内容交换。

关于arrays - 将数组初始化为固定长度数组的最佳方法是什么? (C++/CLI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/493052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com