【问题标题】:c++, storing keys and values inside of a map by using for loopc ++,使用for循环将键和值存储在地图内
【发布时间】:2015-07-28 02:09:29
【问题描述】:

大家好,我正在尝试修改我的代码并很好奇这是否可行。

现在我有两个从两个文件中读取的 for 循环 并将值存储到两个数组中 有点像这样:

fstream infile(file_name.c_str());

for(int i=0;i<10;i++){

        infile >> array[i];
}

infile.close();

有没有办法通过用映射替换两个数组来修改它? 有点像这样:

fstream infile1(file_name1.c_str());
fstream infile2(file_name2.c_str());

map<string,float>my_map;    

for(int i=0;i<10;i++){

        infile1 >>my_map<string> ;

    for(int i=0;i<10;i++){

        infile2 >>my_map<float> ;

【问题讨论】:

  • 旁注:如果使用 C++11,则不需要 .c_str(),因为现在 fstream 对象接受 std::string 作为构造函数参数。

标签: c++ for-loop dictionary


【解决方案1】:

如果要将数据输入到地图中,则需要从文件中获取值,然后将它们添加到地图中。请注意,映射具有唯一键,因此如果键重复,这将覆盖映射中以前的内容。如果您不想这样,则需要使用std::multimap。如果您需要使用std::multimap,此解决方案将不起作用,因为它没有[] 运算符。

fstream infile1(file_name1.c_str());
fstream infile2(file_name2.c_str());

map<string,float>my_map;

std::string temp;
float number;

while(infile1 >> temp && infile2 >> number)
    my_map[temp] = number;

另外请注意,如果您的字符串包含空格,那么您需要将infile1 &gt;&gt; temp 替换为getline(infile1, temp)

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多