c++ - std::vector 构造函数中奇怪的额外括号对?
问题描述
有人可以详细说明为什么下面代码中额外的一对括号对于正确编译是必要的吗?我们正在创建一个std::ifstream
并将其中的所有内容读入一个std::vector
......我在堆栈溢出的示例中看到了这些括号,但我无法弄清楚为什么它们会改变编译器解释代码的方式:
#include <fstream>
#include <vector>
int main()
{
std::ifstream curFile("file.txt", std::ios::binary);
std::vector<char> fileContents(
(std::istreambuf_iterator<char>(curFile)), //why?
std::istreambuf_iterator<char>()
);
}
我正在谈论的括号包装了istreambuf_iterator
构造函数。没有它们,编译器似乎认为这fileContents
是一个函数声明。
解决方案
推荐阅读
- vue.js - 如何使用 vue-google-api 包获取 access_token 以便在 Google api 中进一步使用?
- python - python 3中的lxml:包含tostring(method ='html')无法识别的脚本元素和换行符的标签/元素
- python - Pandas 数据框的 3D 图
- python - TensorFlow CondaVerificationError - 将 Pip 与 Conda 混合
- java - 在无向图中找到两个节点之间断开连接的最小权重
- python - 是否有动态调度系统可以更好地实施基于订阅的支付系统?
- sql - 每个组内的 SQL 连接
- php - ORDER BY 和 WHERE 变量和 LIMIT
- reactjs - Reactjs 更新祖父母状态
- html - 知道如何让两张桌子并排,第三张桌子在底部