原创  STL中注意区别表达式和函数声明 收藏

考虑以下语句:

 std::deque<int> intDeque(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());

我们的原意是想构造一个int型的deque,并用标准输入流中的int数据初始化它。

但是如果我们就这样写的话,我们会得到一大堆莫名奇妙的错误,因为这种情况下,该语句会被认为是一个函数声明。
为了消除这种歧义,我们应该这样书写:
std::deque<int> intDeque((std::istream_iterator<int>(std::cin)),(std::istream_iterator<int>()));
加上2对括号即可消除这种歧义。
 

发表于 @ 2007年04月18日 12:49:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:解决域名、类名冲突的一个小技巧 | 新一篇:关于Heap的一些api

  • 发表评论
  • 评论内容:
  •  
Copyright © lijgame
Powered by CSDN Blog