【问题标题】:C++ standard library: initialize a container by using standard inputC++ 标准库:使用标准输入初始化容器
【发布时间】:2012-04-08 12:32:57
【问题描述】:

我们可以像这样使用标准输入来初始化一个容器双端队列:

deque<int> c((istream_iterator<int>(cin)),(istream_iterator<int>()));

正如《C++ 标准库》所描述的,初始化参数周围的额外括号是必要的。没有它们,c 声明一个返回类型为 deque 的函数。它的第一个参数是 istream_iterator 类型,名称为 cin,并且它的第二个未命名参数的类型是“不带参数返回 istream_iterator 的函数”。看下面的代码

deque<int> c(istream_iterator<int>(cin),istream_iterator<int>());

但是额外的括号会强制初始化器不匹配声明的语法。 我不明白为什么额外的括号会使初始化程序与声明的语法不匹配。非常感谢。

【问题讨论】:

    标签: c++ containers std


    【解决方案1】:

    因为C++标准中定义的语法不接受这种形式作为函数声明:

    T name((U), (V));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多