protobuf: 通讯录2.4

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对象的引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值