2013-03-14 41 views
0

嗨,所以我有一个家庭作业的任务,除了最后一项要求之外,所有工作都完成了。我们从一个txt文件中提取数据,并且几个票房值为0.代替返回0的第一个实例,我们返回0的最后一个实例。下面是一段代码:将文件中的信息拉入地图并需要覆盖重复值?

long long worldBoxOffice = movie.getWorldBoxOffice(); 
movieMap.insert(pair<long long, Movie>(worldBoxOffice, movie)); 

所以在将这一对插入地图之后,我应该怎么做?会超载[]运算符吗?有点困惑,所以任何帮助表示赞赏。我没有发布更多的代码,因为我没有在寻找代码,只是朝着正确的方向推进如何去做。谢谢。

注:我们必须使用地图,不允许使用多地图等

回答

1

由于insertdoesn't replace现有的密钥,你不应该摆在首位使用它。这样的(无效的)插入后没有任何东西可以让你的数据恢复。

您可以使用[]运算符:movieMap[worldBoxOffice] = movie;或按相反顺序进行插入 - 向后读取文件。

+0

正是我在找的,谢谢。 – Supervitesse 2013-03-14 05:47:34

2

也许我误解,但如果你只是用operator [],而不是分配给该地图,当你在你的数据读取,你将结束了您阅读,像这样简单的例子,最后0实例:

#include <iostream> 
#include <map> 

int main() 
{ 
    std::map<int,int> 
    m ; 

    m[0] = 1 ; 

    std::cout << m[0] << std::endl ; 

    m[1] = 2 ; 

    m[0] = 3 ; 

    std::cout << m[0] << std::endl ; 
} 
+0

是的,但'insert'不是这种情况。 – aib 2013-03-14 03:58:15

+0

@aib我建议只使用'[]'但它可能看不清楚,让我调整 – 2013-03-14 04:00:32

+0

啊,是的,现在更清晰 – aib 2013-03-14 04:06:58