C++ 以映射作为参数的函数不起作用

C++ 以映射作为参数的函数不起作用,c++,dictionary,C++,Dictionary,出于某种原因,我的程序中以map作为参数的所有函数都不起作用。此函数调用所有函数(pageAndTimestamp是一个结构btw): 我不知道问题是什么,也不知道调试器为什么要带我去这个函数头。如何修复此问题?例如,函数replacePage定义为: void replacePage(int loc, int page, int time, map<int, pageAndTimestamp> m) 然后映射frames被复制到函数中的变量m。例如,这就是调试器将您带到映射的复制

出于某种原因,我的程序中以map作为参数的所有函数都不起作用。此函数调用所有函数(pageAndTimestamp是一个结构btw):


我不知道问题是什么,也不知道调试器为什么要带我去这个函数头。如何修复此问题?

例如,函数
replacePage
定义为:

void replacePage(int loc, int page, int time, map<int, pageAndTimestamp> m)
然后映射
frames
被复制到函数中的变量
m
。例如,这就是调试器将您带到映射的复制构造函数的原因

此外,这意味着
replacePage
code

  m.at(loc).a[0] = page;
  m.at(loc).a[1] = time;
正在对
副本进行更改,而不是
本身

您可能需要具有表单签名的函数:

bool pageLoaded(int page, const map<int, pageAndTimestamp>& m)
int findPageToReplace(const map<int, pageAndTimestamp>& m)
void replacePage(int loc, int page, int time, map<int, pageAndTimestamp>& m)
void output(int t, int p, double s, double h, const map<int, pageAndTimestamp>& m)
bool页面加载(int页面,常量映射和m)
int findPageToReplace(常量映射和m)
无效替换页面(内部位置、内部页面、内部时间、地图和m)
无效输出(整数t、整数p、双s、双h、常量映射和m)

其中大多数函数采用常量引用,而
replacePage
需要(非常量)引用。

定义不工作。什么地方出了问题?C++不是java。code>int findPageToReplace(map m)--
m
是一个值参数,而不是一个引用。这就是你所有问题的出发点。那么我应该通过引用来传递地图吗?
void replacePage(int loc, int page, int time, map<int, pageAndTimestamp> m)
replacePage(loc, pagestream[time], time, frames);
  m.at(loc).a[0] = page;
  m.at(loc).a[1] = time;
bool pageLoaded(int page, const map<int, pageAndTimestamp>& m)
int findPageToReplace(const map<int, pageAndTimestamp>& m)
void replacePage(int loc, int page, int time, map<int, pageAndTimestamp>& m)
void output(int t, int p, double s, double h, const map<int, pageAndTimestamp>& m)