C ++标准库:使用标准输入初始化容器

时间:2012-04-08 12:32:58

标签: c++ containers std

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

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>());

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

1 个答案:

答案 0 :(得分:3)

因为C ++标准中定义的语法不接受此表单作为函数声明:

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