c++ - 在 std::list 中就地创建自定义类型对象

标签 c++ stl std

假设我有一个结构

struct someStruct
{
    int a;
    customType b;
};

和一个 std::listsomeStruct 实例

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++ - 在 std::list 中就地创建自定义类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178239/

相关文章:

c++ - 如何在不发疯的情况下将 msxml 与 Visual Studio 2008 Express(无 ATL 类)一起使用?

c++ - 使用邻接表创建图

c++ - 仿函数调用和函数调用的详细区别?

c++ - 为什么在 C++11 中更改了 std::vector::resize 签名?

c++ - 如何从http请求正文字符串中获取文件名?

c++ - 为什么在这个函数中使用 LRESULT CALLBACK?

c++ - 类中 std::vector 的析构函数

c++ - 声明 vector map 时出错

C++ std::queue::pop() 调用析构函数。指针类型呢?

c++ - 将对象序列化为加密的 std::fstream (C++)