1.proto3
6.map
语法⽀持创建⼀个关联映射字段,也就是可以使⽤?map?类型去声明字段类型,格式为:
map map_field = N;
要注意的是:
- key_type 是除了float和bytes类型以外的任意标量类型。value_type 可以是任意类型。
- map字段不可以⽤repeated修饰
- map中存⼊的元素是⽆序的
2.通讯录2.4:用map类型定义Remark(备注信息)
contacts.proto
map<string,string> remarks = 7;
write.cc(只展示新增部分)
for(int i = 0;;i++)
{
std::cout << "请输入备注"<< i+1 << "的主题(只输入回车则退出): ";
std::string topic;
getline(std::cin, topic);
if(topic.empty())
break;
std::cout << "请输入备注"<< i+1 << "的内容: ";
std::string content;
getline(std::cin, content);
person->mutable_remarks()->insert({topic, content});
}
解释:
mutable_remarks(): 作用是系统返回一个已经被开辟好空间的remark,也就是map类型的指针,我们可以对这块空间进行操作
read.cc(只展示新增部分)
for(auto& e : person.remarks())
{
std::cout << "备注: " << std::endl;
std::cout << " " << "主题: " << e.first << " 内容: " << e.second;
}
std::cout << std::endl;
解释:
remarks(): 作用是返回一个对应remark对象的引用