我遇到了这段代码:
ifstream file ("data.in");
std::vector<int> v;
file >> v;
这对一个看起来像这样的文件有效:
3
1 2 3
vector 将包含元素 1、2 和 3。这究竟是如何工作的,或者为什么?到目前为止,我没有经常使用 std::vector(主要是因为我在大学里唯一一次使用 C++ 是在数据结构课上,我们不得不编写我们自己的结构版本),但乍一看它并没有看起来这应该行不通。
还有这样的“技巧”吗?
最佳答案
它通过为 ifstream
和 vector
重载 >>
运算符来工作。它可能看起来像这样:
template <typename Char, typename Traits, typename T>
std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is, std::vector<T>& v)
{
std::size_t s;
if (!(is >> s))
return is;
v.resize(s);
for (auto& i : v)
{
is >> i;
}
return is;
}
关于c++ - 从格式化文件创建 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688584/