1. 在线hpp源代码

https://developers.eos.io/manuals/eosio.cdt/v1.7/group__multiindex

1.1 get_code和get_scope

//Returns the code member property.
name eosio::multi_index< TableName, T, Indices >::get_code() const//Returns the scope member property.
uint64_t eosio::multi_index< TableName, T, Indices >::get_scope() const

1.2 迭代

const_iterator eosio::multi_index< TableName, T, Indices >::cbegin() const
const_iterator eosio::multi_index< TableName, T, Indices >::begin() const
const_iterator eosio::multi_index< TableName, T, Indices >::cend() const
const_iterator eosio::multi_index< TableName, T, Indices >::end() constconst_reverse_iterator eosio::multi_index< TableName, T, Indices >::crbegin() const
const_reverse_iterator eosio::multi_index< TableName, T, Indices >::rbegin() const
const_reverse_iterator eosio::multi_index< TableName, T, Indices >::crend() const
const_reverse_iterator eosio::multi_index< TableName, T, Indices >::rend() constconst_iterator eosio::multi_index< TableName, T, Indices >::lower_bound(uint64_t primary
) constconst_iterator eosio::multi_index< TableName, T, Indices >::upper_bound(uint64_t primary
) const

eg.

void myaction() {// create reference to address_index  - see emplace example below// add dan account to table           - see emplace example below// add additional account - brendanaddresses.emplace(payer, [&](auto& address) {address.account_name = "brendan"_n;address.first_name = "Brendan";address.last_name = "Blumer";address.street = "1 EOS Way";address.city = "Hong Kong";address.state = "HK";address.zip = 93445;});uint32_t zipnumb = 93445;auto zip_index = addresses.get_index<name("zip")>();auto itr = zip_index.lower_bound(zipnumb);eosio::check(itr->account_name == name("brendan"), "Lock arf, Incorrect First Lower Bound Record ");itr++;eosio::check(itr->account_name == name("dan"), "Lock arf, Incorrect Second Lower Bound Record");itr++;eosio::check(itr == zip_index.end(), "Lock arf, Incorrect End of Iterator");}

1.3 available_primary_key

uint64_t eosio::multi_index< TableName, T, Indices >::available_primary_key() const

eg.

void myaction() {address_index addresses(_self, _self.value);  // code, scope// add to table, first argument is account to bill for storageaddresses.emplace(payer, [&](auto& address) {address.key = addresses.available_primary_key();address.first_name = "Daniel";address.last_name = "Larimer";address.street = "1 EOS Way";address.city = "Blacksburg";address.state = "VA";});
}

1.4 get_index

template< IndexName> auto eosio::multi_index< TableName, T, Indices >::get_index()

eg.

#include <eosiolib/eosio.hpp>
using namespace eosio;
using namespace std;
class addressbook: contract {struct address {uint64_t account_name;string first_name;string last_name;string street;string city;string state;uint32_t zip = 0;uint64_t primary_key() const { return account_name; }uint64_t by_zip() const { return zip; }};public:addressbook(name receiver, name code, datastream<const char*> ds):contract(receiver, code, ds) {}typedef eosio::multi_index< name("address"), address, indexed_by< name("zip"), const_mem_fun<address, uint64_t, &address::by_zip> > address_index;void myaction() {// create reference to address_index  - see emplace example below// add dan account to table           - see emplace example belowuint32_t zipnumb = 93446;auto zip_index = addresses.get_index<name("zip")>();auto itr = zip_index.find(zipnumb);eosio::check(itr->account_name == name("dan"), "Lock arf, Incorrect Record ");}
}
EOSIO_DISPATCH( addressbook, (myaction) )// This assumes the code from the get_index() example. Replace myaction() {...}
void myaction() {// create reference to address_index  - see emplace example below// add dan account to table           - see emplace example below// add additional account - brendanaddresses.emplace(payer, [&](auto& address) {address.account_name = "brendan"_n;address.first_name = "Brendan";address.last_name = "Blumer";address.street = "1 EOS Way";address.city = "Hong Kong";address.state = "HK";address.zip = 93445;});uint32_t zipnumb = 93445;auto zip_index = addresses.get_index<name("zip")>();auto itr = zip_index.upper_bound(zipnumb);eosio::check(itr->account_name == name("dan"), "Lock arf, Incorrect First Upper Bound Record ");itr++;eosio::check(itr == zip_index.end(), "Lock arf, Incorrect End of Iterator");}
}
EOSIO_DISPATCH( addressbook, (myaction) )

1.5 iterator_to

const_iterator eosio::multi_index< TableName, T, Indices >::iterator_to(const T & obj
) const

eg.

// This assumes the code from the get_index() example. Replace myaction() {...}
void myaction() {// create reference to address_index  - see emplace example below// add dan account to table           - see emplace example below// add additional account - brendanaddresses.emplace(payer, [&](auto& address) {address.account_name = "brendan"_n;address.first_name = "Brendan";address.last_name = "Blumer";address.street = "1 EOS Way";address.city = "Hong Kong";address.state = "HK";address.zip = 93445;});auto user = addresses.get("dan"_n);auto itr = address.find("dan"_n);eosio::check(iterator_to(user) == itr, "Invalid iterator");}
}
EOSIO_DISPATCH( addressbook, (myaction) )

1.6 get

const T& eosio::multi_index< TableName, T, Indices >::get(uint64_t primary,const char * error_msg = "unable to find key"
) const

eg.

void myaction() {// create reference to address_index  - see emplace example// add dan account to table           - see emplace exampleauto user = addresses.get("dan"_n);eosio::check(user.first_name == "Daniel", "Couldn't get him.");
}

多索引表 (4)multi_index.hpp源代码相关推荐

  1. 多索引表 (2)基本概念

    1. 主键和二级索引 1.1 multi_index的主键 必须是唯一的,且类型是uint64_t,且须实现primary_key()方法返回主键字段. eosio::multi_index支持类似的 ...

  2. postgresql 查看数据库,表,索引,表空间以及大小

    为什么80%的码农都做不了架构师?>>>    postgresql 查看数据库,表,索引,表空间以及大小 1.查看数据库 #psql -U postgres //\加上字母l,相当 ...

  3. 数据结构-串操作应用之词索引表

    为书库创建查询索引表 建立词索引表基本步骤: 1.从书目文件中读入一个书目单. 2.从书目单中提取所有关键字插入词表. 3.对词表中的每一个关键字在索引表中进行查找并作相应的插入操作. 详细操作: 1 ...

  4. [性能] SAP销售订单取数逻辑优化---索引表

    我也分享了许多篇性能优化的帖子,主要集中在sql.语法及合理的索引方面.我们在表上加索引确实能大幅提升性能,但是索引的数量.所需字段及利用率都是我们在新建索引时需要考虑的,对于大多数abaper而言, ...

  5. [翻译] 聚集索引表 VS 堆表

    前言: 本文对这篇博客Clustered Tables vs Heap Tables 的翻译, 如有翻译不对或不好的地方,敬请指出,大家一起学习进步. 问题描述 创建一个新表时,一个非常重要的设计原则 ...

  6. Service Team在索引表CRMD_ORDER_INDEX中的存储设计

    本文介绍Service Team在索引表CRMD_ORDER_INDEX中的存储设计 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  7. SAP CRM One Order框架里旧式的索引表设计原理

    本文介绍SAP CRM One Order框架里旧式的索引表设计原理. Created by Wang, Jerry on May 17, 2017 要获取更多Jerry的原创文章,请关注公众号&qu ...

  8. SQL Server Insert 操作效率(堆表 VS 聚集索引表)

    "SQL Server的Insert操作在堆表或者聚集索引表的时候,哪个效率更高?为什么高?" 之前有同事问过我这个问题,为了确保日志库的记录效率,于是我做了简单测试了,首先要先强 ...

  9. Opencv——基于索引表的图像细化

    图像细化针对的是二值图像  或者用阀值处理的二值图像.基于索引表的细化算法大致是遍历被二值化图像的边缘,根据边缘点的八连通域情况查找索引表以确定该边缘点是否能够被删除.根据一些细化规则我们可以建立索引 ...

最新文章

  1. session may be lost when use window.open to open a new window
  2. 陕西师范大学计算机科学学院保研院校,陕西师范大学计算机科学学院量子信息学保研细则...
  3. java 开发 加固态_搭建一个完整的Java开发环境
  4. 《我是一只IT小小鸟》
  5. 使用AIDL挂断电话
  6. 微信小程序引入下载至本地的iconfont图标
  7. 什么是微信公众平台、微信开放平台?它们之间又有什么区别?
  8. 计算机什么快捷键是睡眠,电脑睡眠快捷键(ctrl加哪个键是睡眠)
  9. C++输入两个正整数m和n,求其最大公约数和最小公倍数。
  10. Flink 容错恢复 2.0 2022 最新进展
  11. fastqc检验时不能执行java_解压fastqc软件包后,运行fastqc报错:没有这个命令?...
  12. 万卷书 - 研究巴菲特 [Buffettology]
  13. Muli3D源码分析(1) - 框架概览
  14. 2022年中国市场死亡的互联网产品
  15. man命令后带的数字含义
  16. 使用ffmpeg转码m3u8并播放及跨域问题
  17. C++打印之字形矩阵
  18. MongoDB技术文章合辑1:基础知识
  19. Spring Cloud Discovery——Apache Zookeeper Discovery
  20. Oracle数据库服务器IO高的分析方案和案例探讨

热门文章

  1. 每个程序员都应该了解的内存知识
  2. 【Python】青少年蓝桥杯_每日一题_7.11_画太阳
  3. Android --- 消息模式Toast.makeText.show()的几种用法总结
  4. 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例
  5. shell命令 vxworks5.5_vxWorks shell命令
  6. Linux添加vlan不通,如何处理Linux虚拟机跨VLAN ping不通问题
  7. 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
  8. 走进数据中心,揭秘你所不知道的能耗节省大法
  9. 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学
  10. CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略