c 语言实现 map,C语言实现的HashMap

#include "c_map.h"

void __c_map(c_pmap thiz, COMPARER keycmp)

{

c_prb_tree ptree = (c_prb_tree)__c_malloc(sizeof(c_rb_tree));

__c_rb_tree(ptree, keycmp);

ptree->_A_keyofvalue = c_select1st();

thiz->_l = ptree;

}

void __c_pam(c_pmap thiz)

{

__c_eert_br((c_prb_tree)thiz->_l);

__c_free(thiz->_l);

}

c_pmap c_map_assign(c_pmap thiz, const c_pmap M)

{

c_rb_tree_assign((c_prb_tree)thiz->_l, (c_prb_tree)M->_l);

return thiz;

}

c_iterator c_map_begin(c_pmap thiz)

{

return c_rb_tree_begin((c_prb_tree)thiz->_l);

}

c_iterator c_map_end(c_pmap thiz)

{

return c_rb_tree_end((c_prb_tree)thiz->_l);

}

c_reverse_iterator c_map_rbegin(c_pmap thiz)

{

return c_rb_tree_rbegin((c_prb_tree)thiz->_l);

}

c_reverse_iterator c_map_rend(c_pmap thiz)

{

return c_rb_tree_rend((c_prb_tree)thiz->_l);

}

c_bool c_map_empty(c_pmap thiz)

{

return c_rb_tree_empty((c_prb_tree)thiz->_l);

}

size_type c_map_size(c_pmap thiz)

{

return c_rb_tree_size((c_prb_tree)thiz->_l);

}

size_type c_map_max_size(c_pmap thiz)

{

return c_rb_tree_max_size((c_prb_tree)thiz->_l);

}

value_type c_map_at(c_pmap thiz, key_type key)

{

c_iterator iter = c_map_lower_bound(thiz, key);

c_iterator end = c_map_end(thiz);

if(ITER_EQUAL(iter, end) ||

((c_prb_tree)thiz->_l)->_A_key_compare(key,

((c_ppair)ITER_REF(iter))->first) < 0)

return NULL; return ((c_ppair)ITER_REF(iter))->second;

}

void c_map_swap(c_pmap thiz, c_pmap M)

{

c_rb_tree_swap((c_prb_tree)thiz->_l, (c_prb_tree)M->_l);

}

c_iter_bool_pair c_map_insert(c_pmap thiz, const value_type val)

{

return c_rb_tree_insert_unique((c_prb_tree)thiz->_l, val);

}

c_iterator c_map_insert1(c_pmap thiz, c_iterator position, const value_type val)

{

return c_rb_tree_insert_unique1((c_prb_tree)thiz->_l, position, val);

}

void c_map_insert2(c_pmap thiz, c_iterator first, c_iterator last)

{

c_rb_tree_insert_unique2((c_prb_tree)thiz->_l, first, last);

}

void c_map_erase(c_pmap thiz, c_iterator position)

{

c_rb_tree_erase((c_prb_tree)thiz->_l, position);

}

size_type c_map_erase1(c_pmap thiz, key_type key)

{

return c_rb_tree_erase1((c_prb_tree)thiz->_l, key);

}

void c_map_erase2(c_pmap thiz, c_iterator first, c_iterator last)

{

c_rb_tree_erase2((c_prb_tree)thiz->_l, first, last);

}

void c_map_clear(c_pmap thiz)

{

c_rb_tree_clear((c_prb_tree)thiz->_l);

}

c_iterator c_map_find(c_pmap thiz, key_type key)

{

return c_rb_tree_find((c_prb_tree)thiz->_l, key);

}

size_type c_map_count(c_pmap thiz, key_type key)

{

c_iterator key_iter = c_rb_tree_find((c_prb_tree)thiz->_l, key);

c_iterator end = c_rb_tree_end((c_prb_tree)thiz->_l);

return ITER_EQUAL(key_iter, end) ? 0 : 1;

}

c_iterator c_map_lower_bound(c_pmap thiz, key_type key)

{

return c_rb_tree_lower_bound((c_prb_tree)thiz->_l, key);

}

c_iterator c_map_upper_bound(c_pmap thiz, key_type key)

{

return c_rb_tree_upper_bound((c_prb_tree)thiz->_l, key);

}

c_iter_iter_pair c_map_equal_range(c_pmap thiz, key_type key)

{

return c_rb_tree_equal_range((c_prb_tree)thiz->_l, key);

}

c_bool c_map_less(c_pmap thiz, const c_pmap M, COMPARER paircmp)

{

return c_rb_tree_less((c_prb_tree)thiz->_l, (c_prb_tree)M->_l, paircmp);

}

c_bool c_map_equal(c_pmap thiz, const c_pmap M, COMPARER paircmp)

{

return c_rb_tree_equal((c_prb_tree)thiz->_l, (c_prb_tree)M->_l, paircmp);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值