如何访问指针映射的元素
How can I access the elements of a pointer-to-map?
我已经通过指针向函数传递了一个映射,但是现在我无法更改映射的内容,因为代码无法编译。我甚至不确定是否允许我将地图作为指针传递。例如:
#include <iostream>
#include <stdlib.h>
#include <map>
#include <string>
using namespace std;
void faa(map<int,string> *baa){
*baa[1] = "somethingnew";
}
int main(){
map<int,string> bar;
bar[1] = "one";
bar[2] = "two";
bar[3] = "three";
int ii;
for(ii=1;ii<4;ii++){
cout<<"bar["<<ii<<"]="<<bar[ii]<<endl;
}
faa(&bar);
cout<<"after"<<endl;
for(ii=1;ii<4;ii++){
cout<<"bar["<<ii<<"]="<<bar[ii]<<endl;
}
}
当我编译这个时,我得到了错误:
<>之前错误:没有匹配' operator* '(操作数类型为' std::map> ')*baa[1] = "somethingnew";之前像faa这样的函数可能吗?语法是什么?
由于运算符优先规则,*baa[1]
被解析为*(baa[1])
而不是(*baa)[1]
。你只要在括号里加上括号就行了。但是,您最好使用引用:
void faa(map<int,string> &baa){
baa[1] = "somethingnew";
}
那么你只需要调用函数而不需要map的地址:
faa(bar);
您可以使用(*baa)[1]
。
默认优先级与*(baa[1])
解释错误信息:如果baa
是指针,可以使用[]
操作符访问指针指向的第n个元素,因此baa[1]
的类型是std::map
,并且它没有*操作符。
相关文章:
- 如何创建对象函数指针C++映射?
- c++:复制、删除和运算符=在原始指针映射中
- 尝试通过指针映射访问类成员
- 使用函数指针映射时的 C++ 调用函数
- 将新元素推送到函数指针映射中 "inline" ?
- 如何在C 11中创建指针映射以静态成员功能
- 方法指针映射,编译器说他们不接受任何参数
- 从指针映射调用函数,指向具有可变数量参数的函数
- 如何使用boost::与函数指针映射正确绑定
- std::按值或指针映射操作
- 将函数指针映射到 std::string
- 指向指针向量的指针映射的错误
- 使用C++中的函数指针映射枚举键和值
- 创建指向成员函数的指针映射
- 无法从指向多态类的指针映射获取有效的指针
- C++ - 通过 getter 函数在单独的类中从对象指针映射访问成员函数
- 指向成员函数的指针映射:无法将 void (*) 转换为 void (对象::*)
- std::基类指针映射
- 为对象指针映射编写函数模板时出现问题
- 指针映射的数组下标运算符