美文网首页
ijk常用工具

ijk常用工具

作者: 一川烟草i蓑衣 | 来源:发表于2019-06-27 10:35 被阅读0次

    ijktree:

    //tree的构建,tp是根节点,next是要插入的节点,

    void *ijk_av_tree_insert(IjkAVTreeNode**tp, void *key,

                         int (*cmp)(const void *key, const void *b),IjkAVTreeNode**next){

                IjkAVTreeNode *t = *tp;

                if (t) { //如果有根节点

                }else{ //如果没有根节点

                 *tp  = *next;          //将next作为根节点

                }

    }

    ijkstl:map相关的操作

    typedef map<int64_t, void *> IjkMap; //map是模版类,使用typedef给map起了个别名IjkMap

    void* ijk_map_create() {

        IjkMap*data =new IjkMap(); //创建一个IjkMap对象

        return data;

    }

    void ijk_map_put(void *data,int64_t key, void *value) { //存取key,value数据

        IjkMap*map_data =reinterpret_cast(data); //reinterpret_cast为强制类型转换

        if (!map_data)

            return;

        (*map_data)[key] = value; //key,value存储

    }

    void* ijk_map_get(void *data,int64_t key) { //根据key得到value

        IjkMap*map_data =reinterpret_cast(data);

        if (!map_data)

            return NULL;

        IjkMap::iteratorit = map_data->find(key); //根据key寻找

        if (it != map_data->end()) { //如果找到就返回 it->second否则返回NULL

            return it->second;

        }

        return NULL;

    }

    void* ijk_map_index_get(void *data, int index) {  //根据index得到value

        IjkMap*map_data =reinterpret_cast(data);

        if (!map_data || map_data->empty())

            return NULL;

        IjkMap::iteratorit;

        it = map_data->begin();

        for (int i =0; i < index; i++) {

            it = it++;

            if (it == map_data->end()) {

                return NULL;

            }

        }

        return it->second;

    }

    相关文章

      网友评论

          本文标题:ijk常用工具

          本文链接:https://www.haomeiwen.com/subject/jcslcctx.html