在std::list中就地创建自定义类型对象
In place creation of custom type object in std::list
假设我有一个结构
struct someStruct
{
int a;
customType b;
};
和CCD_ 2实例中的CCD_
std::list<someStruct> aList;
将项目存储到该列表的一种方法是创建someStruct
,将我想要的值存储到该实例,然后存储列表中类似的实例
someStruct obj;
obj.a = 4;
obj.b = customType::value_type;
aList.push_back(obj);
有没有一种更通用的方法可以做到这一点,这样我就不需要创建对象了?
很抱歉一开始使用数组作为示例!
在C++11中,您可以执行
anArray[0] = {123, 456};
或者更详细地说:
anArray[0] = someStruct{123, 456};
在任何版本的C++中,您都可以执行聚合数组初始化:
someStruct anArray[10] = {{1, 2}, {3, 4}, /*...*/};
由于原始问题更改而编辑:
由于现在这是显式C++,所以实现这一点的一种线性方法是为结构提供构造函数。
struct someStruct {
someStruct(int new_a, customType new_b) : a(new_a), b(new_b) {}
int a;
customType b;
};
...
aList.push_back(someStruct(4, customType::value_type));
这与将结构推入向量密切相关
在C中,您可以使用指定的初始值设定项语法:
struct someStruct ss[] = {
{.a=5, .b=6}
, {.a=6, .b=7}
, {.a=7, .b=8}
};
演示。
这个语法在C++中不可用,所以你必须坚持基于位置的老式初始化:
struct someStruct ss[] = {
{5, 6}
, {6, 7}
, {7, 8}
};
相关文章:
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 从函数为 std::vector 创建自定义扩展
- 是否有任何统一的方法可以在 c++ 中创建自定义比较器?
- 查询数据库以在 C++ 中创建自定义类集合的最佳方法
- 创建自定义向量类错误
- C ++ Google test (gtest):如何创建自定义断言和期望?
- 有没有办法使用 googletest 创建自定义参数生成器?
- 使用 WinAPI 创建自定义菜单的最佳方法是什么
- 在 rxcpp 中创建自定义运算符
- 调整大小的大小时,会创建自定义的Windows边框边缘消失
- 如何在Qt中创建自定义颜色选择器
- 我想在qt中创建自定义标题栏
- 如何为 QtCreator 创建自定义主题
- 如何在 cocos2d-x 中创建自定义操作
- 如何创建自定义计时时钟
- 在C 中创建自定义类的多个实例
- 在 V8 中创建自定义 JavaScript 函数
- 在C++中创建自定义异常
- 如何使用 1D 高斯内核在 Filter2D 上创建自定义 2D 内核