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

时间:2012-11-17 21:27:14

标签: c++ vector

我有struct

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

我需要使用空userpassword初始化vector

struct user r={"",?};

我应该放什么而不是?

4 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:9)

像这样:

#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
    // ...
}

答案 2 :(得分:7)

怎么样

user r = {"",{}};

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

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

user r;

答案 3 :(得分:1)

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

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

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

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

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

然后写下:

User r;

将导致正确初始化的用户。