c++ - 是否可以使用支撑初始化列表构造 boost::circular_buffer ?

标签 c++ boost

以下内容无法编译:

auto myCircularBuffer = boost::circular_buffer<int>{1,2,3,4};

有错误:

`error: no matching function for call to ‘boost::circular_buffer<int>::circular_buffer(<brace-enclosed initializer list>)’`

是否有另一种机制可以使用支撑初始化列表构建 boost::circular_buffer 或执行另一种形式的聚合初始化?或者我们是否必须将每个元素推回?

最佳答案

查看the docs ,circular_buffer 没有初始化列表重载。一次推送一个项目的唯一真正替代方案是 InputIterator, InputIterator overload .

当然,您可以自由地创建自己的函数,使用 InputIterator、InputIterator 重载来让您使用初始值设定项列表:

template<typename T>
boost::circular_buffer<T> make_circular_buffer(const std::initializer_list<T>& init)
{
  return boost::circular_buffer<T>(init.begin(), init.end());
}

auto b = make_circular_buffer({1,2,3,4});

关于c++ - 是否可以使用支撑初始化列表构造 boost::circular_buffer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229712/

相关文章:

c++ - 由于 operator= 不明确,multi_index_container 不适用于递归变体

c++ - Boost Geometry/intersection() 似乎返回不一致的结果

c++ - 逻辑门的快速计算

c++ - 如何检查 SSL 套接字是否关闭(异步)

c++ - 使用 Boost Graph Library 按拓扑顺序打印顶点名称

c++ - 如何交换 mpl::vector 的两个元素?

c++ - 使用修改后的 floyd warshall 打印给定节点的黑白最短路径

C++, std::transform 按索引替换项目

c++ - 什么是快速插入+删除和部分反转的好数据结构?

c++ - "basic"类的运算符重载