c++ - 在 C++ 中,如何以与从映射中检索值相同的顺序从 vector 中检索值?

标签 c++ sorting dictionary vector

我正在编写一段代码,将对象存储到 map<string, vector<T> > 中。该 map 迭代地填充数据,分析数据,然后在一个大循环中写入文件。在该循环之前,我打开文件以写出每列的内容,例如 # time var1 var2 var3 。问题是,我需要可靠地写 var1 , var2 ,和var3等等......在标题中,它们将以相同的顺序从 map 中检索。我现在使用一个丑陋的解决方法,带有 vector :

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的答案,我初始化 map ,然后清除 vector s 是大循环开始时的值。

最佳答案

为什么不迭代 map 本身呢?这将保证您以与 map 本身相同的顺序检索它,因为它是 map 本身的顺序:

std::map<std::string, std::vector<T> > m = ...;

for (const auto& item : m)
{
    outputfile << item.first << " ";
}

Ideone example .

关于c++ - 在 C++ 中,如何以与从映射中检索值相同的顺序从 vector 中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855526/

相关文章:

c++ - 在C++中应用寻路算法(塔防)

c++ - MFC 应用程序静默关闭

C#:GetHashCode、Equals 和 Dictionary 导致 IndexOutOfRangeException?

python - 如何在 Pandas 中用数字对字符串进行排序?

python - 如何从我的 Python 主函数返回多个字典

javascript - 如何从 Map 中获取对象键的值

c++ - Eclipse - C++ 代码风格和标准定制和自动化

c++ - itk 3.20.1 处理器亲和性

Javascript 带条件排序给出乱序结果

java - 使用 compareTo() 方法按字母顺序对列表进行排序