我有以下代码(从here mooched)随机化1500个值的向量,我想将它们放在文本文件中,但不能。老实说,我不完全理解这段代码是如何工作的,所以我希望有人向我解释它是如何工作的和/或如何将输出更改为文件。
#include <iostream>
#include <random>
#include <algorithm>
#include <iterator>
#include <fstream>
int main() {
std::vector<int> v;
for (int i; i<1500; ++i){
v.push_back(i);
}
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << "\n";
return 0;
}
答案 0 :(得分:2)
std::cout
的类型和std::ofstream
类型都来自std::ostream
,与std::ostream_iterator
操作的类型相同:
#include <iostream>
#include <random>
#include <algorithm>
#include <iterator>
#include <fstream>
void emit_values(std::ostream& os)
{
std::vector<int> v;
for (int i = 0; i<1500; ++i){
v.push_back(i);
}
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(os, " "));
os << "\n";
}
int main()
{
// use stdout
emit_values(std::cout);
// use a file
std::ofstream fs("values.txt");
emit_values(fs);
fs.close();
return 0;
}