在结构中初始化空向量 - c++

Initialize empty vector in structure - c++

本文关键字:向量 c++ 初始化 结构      更新时间:2023-10-16

我有一个struct

typedef struct user {
    string username;
    vector<unsigned char> userpassword;
} user_t;

我需要用空vector初始化userpassword

struct user r={"",?};

我应该放什么而不是?

std::stringstd::vector<T>都有将对象初始化为空的构造函数。您可以使用std::vector<unsigned char>()但我会删除初始值设定项。

怎么样

user r = {"",{}};

user r = {"",{''}};

user r = {"",std::vector<unsigned char>()};

user r;

像这样:

#include <string>
#include <vector>
struct user
{
    std::string username;
    std::vector<unsigned char> userpassword;
};
int main()
{
    user r;   // r.username is "" and r.userpassword is empty
    // ...
}

默认向量构造函数将创建一个空向量。因此,您应该能够编写:

struct user r = { string(), vector<unsigned char>() };

请注意,我还使用了默认的字符串构造函数而不是 "。

您可能需要考虑使用户成为类并添加默认构造函数来执行此操作:

class User {
  User() {}
  string username;
  vector<unsigned char> password;
};

然后只是写:

User r;

将生成正确初始化的用户。