c++ - 我可以存储一组 iostream 而不在堆上手动分配它们吗?
问题描述
在 C++ 中,std::basic_iostream
的复制和移动赋值运算符受到保护(出于我不太了解的原因)。这似乎让我没有太多管理iostream
对象集合的方法,没有在堆上手动分配它们、存储指针列表以及编写清理它们的析构函数。
我是否错过了一些技巧,可以让我将它们分配在 a 中std::vector
?
当然,我想我可以继承受保护的运营商并将其提升为公众,但这似乎是一团糟。
奖励问题:为什么这些方法首先受到保护?
解决方案
我可以在堆以外的任何地方存储 iostream 的集合吗?
唯一不动态分配的标准容器是std::array
. 您可以将iostream
' 存储在数组中:
std::stringbuf sb;
std::array streams{
std::iostream(&sb),
std::iostream(&sb),
};
推荐阅读
- python - 使用 discord.py 获取频道名称
- node.js - 在 Angular 6 中创建项目给出错误:在附近解析时 JSON 输入意外结束
- jquery - 用cheerio清空输出
- r - 如何在 R Markdown 中附加日期
- sql - 如何使用 JSON_VALUE 对 JSON 数据设置多个过滤器?
- influxdb - 获取测量的标签值 - influxDB
- mongodb - MongoError:命令聚合需要身份验证
- r - r中的KMV求解非线性方程
- python - Keras TensorBoard 显示不正确的召回/精度指标
- algorithm - 给定一个数 n 和 k,有多少个有 k 个叶子的平衡(高度平衡)二叉树?