在结构体中初始化vector
Initialize a vector inside a struct
我有以下结构体:
struct MsgProperties
{
DWORD msgSize;
std::vector<BYTE> vbuffer;
//-Constructor
MsgProperties(DWORD A = 0) : msgSize(A){}
};
我想把这个结构体和一个c++向量一起使用所以这就是我所做的:
std::vector<MsgProperties> ReadText;
BYTE buffer[MAX_BUFFER_SIZE];
DWORD bytesRead;
do
{
bytesRead = myFile.Read(buffer, MAX_BUFFER_SIZE);
ReadText.push_back(MsgProperties(bytesRead, std::vector<BYTE>((BYTE*)buffer, (BYTE*)buffer + bytesRead)));
} while (bytesRead > 0);
但我不知道如何使它正确工作。有人能告诉我我错过了什么吗?
看起来你需要另外2个构造函数:
MsgProperties(DWORD A, const std::vector<BYTE>& vec) : msgSize(A), vbuffer(vec) {}
MsgProperties(DWORD A, std::vector<BYTE>&& vec) : msgSize(A), vbuffer(vec) {}
或者,单个构造函数也很好:
MsgProperties(DWORD A, std::vector<BYTE> vec) : msgSize(A), vbuffer(std::move(vec)) {}
顺便说一句,我不明白为什么你需要消息大小。向量的大小就是消息的大小。
相关文章:
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么std::vector和std::valarray初始化构造函数不同
- 初始化 std::vector 替换为单大括号而不是双大括号
- 使用大括号初始化 std::vector 使用初始值设定项列表
- 为什么初始化 std::vector 时不能使用模板整数?
- 我可以列表初始化 std::vector 并完美转发元素吗?
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 使用范围库初始化 std::vector
- 有效地初始化 const std::vector 类成员
- 根据指针条件初始化std::vector
- 正在使用unique_ptr初始化std::vector
- 我可以从实例列表中初始化 std::vector<T*> 吗?
- 使用 constexpr 和 std::array 进行静态初始化来替换动态初始化的 std::vector 的闰年
- 在 ctor 中使用 const&vector 初始化的 const&vector 成员
- C++ 犰狳:从 vector<vector 初始化 mat <double>> 破坏数据
- 用std::vector初始化Eigen::vector
- 如何使用std::vector初始化boost::random::discrete_distribution
- 为什么vector初始化构造和复制
- 作为函数形参传递的Vector初始化器列表
- 如何避免 std::vector<> 初始化其所有元素?