【发布时间】:2015-07-03 12:46:30
【问题描述】:
我正在编写将对象存储到map<string, vector<T> > 中的代码。这张地图是用数据迭代填充的,这些数据被分析,然后在一个大循环中写入文件。在该循环之前,我打开文件以写出每一列的内容,例如# time var1 var2 var3。问题是,我需要在标题中可靠地写入var1、var2 和var3 等...,其顺序与从地图中检索它们的顺序相同。我现在正在使用一个丑陋的解决方法,带有一个向量:
std::vector<std::string> header_names;
header_names.push_back("var1");
header_names.push_back("var2");
header_names.push_back("var3");
std::map<std::string, std::string> headers;
for(int i = 0; i < header_names.size(); i++) {
headers[header_names[i]] = header_names[i];
}
std::ofstream outputfile("out.txt");
outputfile << "# time ";
for(auto it = headers.begin(); it != headers.end(); ++it) {
outputfile << it->first << " ";
}
有没有更好的方法来达到同样的结果?
编辑:
使用@Claudiu 的答案,我在其中初始化地图,然后清除vectors,它们是大循环开始时的值。
【问题讨论】:
-
不能只对向量进行排序,然后从头到尾依次输出吗?
-
var1等从何而来?键在地图中吗?
标签: c++ sorting dictionary vector