c++ - 具有动态分配成员的结构 vector

标签 c++ vector struct

如果我想用一个结构填充一个 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/

相关文章:

c++ - 延长临时对象的生命周期而不复制它

algorithm - 相似矩阵 -> 特征向量算法?

java - 如何改用 ArrayList

c - C 结构体数组的寻址和分配内存

c - 在 C 中,全局结构的成员是否默认初始化为零?

C++ 我应该使用虚拟方法吗?

c++ - 我可以显式调用类的构造函数和析构函数吗?

c++ - 使用返回的 vector

C++ 二进制文件读入结构

c++ - 制作基本的四功能计算器,使用 “error c4700: uninitialized local variable ' answ”