如果我想用一个结构填充一个 vector ,并且在该结构中我需要动态分配/重新定位 WCHAR
数组,我将如何填充它?
我不能使用 std::wstring
,因为我将通过 Windows API 使用成员。
像 RegQueryValueEx
这样的函数需要一个 LPBYTE
来接收数据。
或者我应该使用其他一些 STL 容器吗?
示例代码:
typedef struct {
WCHAR *str1;
WCHAR *str2;
DWORD SomeOtherStuff;
} MYSTRUCT;
vector<MYSTRUCT> myvector;
最佳答案
使用 std::vector<WCHAR>
对于结构成员。这将为您的结构提供必要的复制/移动语义,以将其放入 vector
中。而且,当您需要某些 API 的原始指针时,它可以作为 &str1[0]
使用。 .
在执行任何将访问数据的操作之前,请记住确保它足够大(通过将其初始化为所需大小,或调用 resize()
)。另请记住,当调整 vector 大小时,指向数据的指针和迭代器将变得无效。
关于c++ - 具有动态分配成员的结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124465/