如何替换结构体c++
How to replace struct c++
我有以下结构
struct LetterFreq{
char letter;
double freq;
};
现在我正试图创建一个std:列表,列出这些。。。
std::list<LetterFreq> freqList;
LetterFreq f = {'A',.08167};
freqList.push_back(f);
f = {'B',.01492};
freqList.push_back(f);
然而,当我尝试编译时,我会。。。
error: expected expression
如果我换成。。。
std::list<LetterFreq> freqList;
LetterFreq f = {'A',.08167};
freqList.push_back(f);
LetterFreq f2 = {'B',.01492};
freqList.push_back(f2);
它看起来很管用,但我真的不想那样。我宁愿重用变量f
。
如果您有C++11可用,您可以使用:
std::list<LetterFreq> freqList;
freqList.emplace_back('A', .08167);
freqList.emplace_back('B', .01492);
或者更好的是,使用这样的初始值设定项列表:
std::list<LetterFreq> freqList { {'A', .08167}, {'B', .01492} };
如果没有C++11,您可以执行以下操作:
struct LetterFreq{
char letter;
double freq;
LetterFreq(char letter, double freq)
: letter(letter), freq(freq)
{}
};
f = LetterFreq('B',.01492);
您所陷入的陷阱是,初始化程序列表是用构造函数完成的。在第二个例子中,因为每次都要创建新的对象(而不是现有的对象),所以编译器会调用带有初始化器列表的构造函数。
在您的第一个示例中,它必须调用赋值运算符,该运算符不支持初始化器列表,而且实际上也不应该:)
相关文章:
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 包含 std::list 的结构体的 C++ 初始化
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何使用结构体的向量数组?
- 如何使用结构体在C++中更改这些代码?
- 无法在 Mosquitto MQTT Broker 插件上访问结构体 mosquitto 的元素
- 我应该如何在C++中使用结构体解决输入失败的问题?
- Qsort() 比较结构体整数的总和
- 如何使用迭代器指向结构体c++的向量
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 如何获取结构体成员的地址
- 创建结构体向量,表达式:向量下标超出范围
- boost::任何带有结构体和无符号整数
- 如何在构造函数中初始化结构体的动态数组?
- 只写结构体的某些字段
- C++ push_back() 一个结构体到一个向量中
- C++14 结构体上的统一初始化
- 访问不同类的私有结构体成员