我有一个需要 2 个参数的函数,但其中一个(地图容器)被传递给另一个函数:
void myFunc(const std::map<std::string, int> &myMap, int num) {
int x = internalFunc(myMap);
// do some stuff...
}
int internalFunc(const std::map<std::string, int> &myMap) {
// return some map statistics
}
Run Code Online (Sandbox Code Playgroud)
main.cpp 中的某处:
std::map<std::string, int> map1{ {"Hello", 10}, {"Hello2", 20}, {"Hello3", 30} };
myFunc(map1, 20);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
移动语义是优化这段代码(使用移动将一个参数传递给另一个函数)的好方法,如下所示:
int internalFunc(std::map<std::string, int> &&myMap) {
// now gets rvalue reference
// return some map statistics
}
void myFunc(std::map<std::string, int> myMap, int num) {
int x = internalFunc(std::move(myMap));
// do some stuff...
} …Run Code Online (Sandbox Code Playgroud)