首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图使用vector<ostringstream>时编译错误

试图使用vector<ostringstream>时编译错误
EN

Stack Overflow用户
提问于 2014-10-10 13:12:36
回答 1查看 53关注 0票数 2

我试图编译这段代码,但是我得到了一个错误:

代码语言:javascript
复制
#include <sstream>
#include <vector>

int main() {
    std::vector<std::ostringstream> v;
    v.reserve(100);
    return 0;
}

错误消息说明了无法默认构造ostringstream。在用gcc或clang编译的时候,我真的无法理解错误信息。为什么reserve()试图构建任何东西?下面是代码:http://ideone.com/lXQRkH

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-10 13:40:35

当调用reserve时,向量需要有足够的空间来容纳100个元素。这意味着reserve必须有复制或移动所有东西的可能性。

流是不可复制的。因此,在C++11之前,它们不能存储在标准容器中。在C++11中,流可以被移动,使它们在标准容器中工作得很好。这里缺少的部分是libstdc++目前还没有实现可移动流。这个编译和libc++。

希望能在GCC 5.0中看到这种效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26300301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档