• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ btree类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中btree的典型用法代码示例。如果您正苦于以下问题:C++ btree类的具体用法?C++ btree怎么用?C++ btree使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了btree类的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: find_in_tree

void find_in_tree(const btree<T> &b, T val) {
  typename btree<T>::const_iterator iter = std::find(b.begin(), b.end(), val);
  if (iter == b.end()) 
    std::cout << val << " not found" << std::endl;
  else
    std::cout << val << " found" << std::endl;
}
开发者ID:kevyin,项目名称:btree,代码行数:7,代码来源:test03.cpp


示例2: es_menor

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
bool es_menor(btree<int> &T1,btree<int>::iterator n1,
	      btree<int> &T2,btree<int>::iterator n2) {
  // Si los dos estan vacios, entonces no cae en
  // ninguno de los casos especificados y debe
  // retornar false. 
  if (n1==T1.end() && n2==T2.end()) return false;
  // Si `n1==end()' y `n2!=end()' entonces
  // `*n1<*n2' y debe retornar `true'. 
  if (n1==T1.end()) return true;
  // Si `n1!=end()' y `n2==end()' entonces
  // `*n1>*n2' y no entra en ninguno de los casos,
  // por lo tanto debe retornar `false'. 
  if (n2==T2.end()) return false;
  // Las dos raices son dereferenciables.
  // Si son distintas ya puede retornar un valor. 
  if (*n1 < *n2) return true;
  if (*n1 > *n2) return false;

  // Si llega aqui, las dos raices son dereferenciables
  // e iguales. Hay que comparar los arboles de los hijos. 

  // Si `Ai' y `Bi' son diferentes retornar un valor...
  if (es_menor(T1,n1.left(),T2,n2.left()))
    return true;
  if (es_menor(T2,n2.left(),T1,n1.left()))
    return false;
  // ... finalmente retorna el valor de comparacion
  // de los hijos derechos. 
  return es_menor(T1,n1.right(),T2,n2.right());
}
开发者ID:Malows,项目名称:aedcode,代码行数:31,代码来源:comptree.cpp


示例3: tree_union

void  tree_union (btree<int> &A, 
	          btree<int> &B, 
	          btree<int> &C, 
	          bool (*fun) (int x,int y,int &z),int undef=0) {
  tree_union (A, A.begin(), B, B.begin(),
	      C, C.begin(), fun, undef);
} 
开发者ID:Malows,项目名称:aedcode,代码行数:7,代码来源:treeint.cpp


示例4: semejante_p

bool semejante_p (btree &T,iterator_t nt,
	      btree &Q,iterator_t nq) { 
  if (nt==T.end() xor nq==Q.end()) return false;
  if (nt==T.end()) return true;
  return semejante_p(T,nt.right(),Q,nq.right()) &&
    semejante_p(T,nt.left(),Q,nq.left());
}
开发者ID:Malows,项目名称:aedcode,代码行数:7,代码来源:semejantep.cpp


示例5: cont_nod_prof

// -------------------------------------------------------------------
int cont_nod_prof(btree<int> &A,btree<int>::iterator n,
		  int prof) {
  if (n==A.end()) return 0;
  else return (prof<=0) 
	 + cont_nod_prof (A,n.left(),prof-1) 
	 + cont_nod_prof (A,n.right(),prof-1);
}
开发者ID:Malows,项目名称:aedcode,代码行数:8,代码来源:contnprof.cpp


示例6: tree_intersection

// Esta es la funcion "wrapper" correspondiente. 
void  tree_intersection(btree<int> &A, 
               	        btree<int> &B, 
		        btree<int> &C, 
                        bool (*fun) (int x,int y,int &z)) {
  tree_intersection (A, A.begin(),
		     B, B.begin(),
		     C, C.begin(),
		     fun);
}
开发者ID:Malows,项目名称:aedcode,代码行数:10,代码来源:treeint.cpp


示例7: reduce

T reduce (btree <T> & Q,
          T (*f_asociat) (T,T),
          T   v_ini) {
    T z ;
    if (Q.begin() != Q.end())
        z = reduce (Q, Q.begin (), f_asociat, v_ini, f_iden<T>);
    else
        z = v_ini;
    return z ;
}
开发者ID:dgalizzi,项目名称:aedcode,代码行数:10,代码来源:progfunc_bb.cpp


示例8: equalp

bool equalp(btree<int> &A, btree<int>::iterator a, 
	    btree<int> &B, btree<int>::iterator b, 
	    bool (*eq)(int x,int y)) {
  if ((a == A.end()) != (b == B.end())) return false;
  if (a == A.end()) return true;
  if (!eq(*a,*b)) return false;
  return equalp(A,a.left(),B,b.left(),eq) &&
    equalp(A,a.right(),B,b.right(),eq);
}
开发者ID:Malows,项目名称:aedcode,代码行数:9,代码来源:comptree.cpp


示例9: test_dupkeys

static void test_dupkeys (const btree<V> & t, int k1, int k2,
                          int expected_key,
                          const V expected_value1, const V expected_value2)
{
    typename btree<V>::query_answer query_result
        = t.range_query (typename btree<V>::key_range(k1, k2));
    BOOST_CHECK_EQUAL (query_result.size(), 2);
    BOOST_CHECK_EQUAL (query_result[0].first, expected_key);
    BOOST_CHECK_EQUAL (query_result[0].second, expected_value1);
    BOOST_CHECK_EQUAL (query_result[1].first, expected_key);
    BOOST_CHECK_EQUAL (query_result[1].second, expected_value2);
}
开发者ID:allogn,项目名称:TOUCH,代码行数:12,代码来源:test.cpp


示例10: tareas

void tareas (btree <T> & Q) {
    T     i ;
    T cero = 0 ;
    T semilla = INT_MAX ;
    bool  b ;

    cout << endl ;
    cout << "+++++++++++++++++++++++++++++++++++++++++++++++ " << endl ;
    cout << "Arbol ; Q: ";
    Q.lisp_print ();
    cout << endl;

    b = reduce (Q, and_f,  true, evenp) ;
    cout << endl ;
    cout << "todos pares   ? : " << (b ? "si" : "no") << endl;

    b = reduce (Q, and_f,  true,  oddp) ;
    cout << endl ;
    cout << "todos impares ? : " << (b ? "si" : "no") << endl;

    b = reduce (Q,  or_f, false, evenp) ;
    cout << endl ;
    cout << "alguno par    ? : " << (b ? "si" : "no") << endl;

    b = reduce (Q,  or_f, false, oddp) ;
    cout << endl ;
    cout << "alguno impar  ? : " << (b ? "si" : "no") << endl;

    i = reduce (Q, max, -semilla) ;
    cout << endl ;
    cout << "max. etiquetas  = " << i << endl;

    i = reduce (Q, min, semilla) ;
    cout << endl ;
    cout << "min. etiquetas  = " << i << endl;

    i = reduce (Q, suma, cero) ;
    cout << endl ;
    cout << "suma etiquetas  = " << i << endl;

    i = reduce (Q, root, cero) ;
    cout << endl ;
    cout << "norma L2        = " << i << endl;

    i = reduce (Q, suma, cero, square) ;
    cout << endl ;
    cout << "suma cuadrados etiquetas = " << i << endl;

}
开发者ID:dgalizzi,项目名称:aedcode,代码行数:49,代码来源:progfunc_bb.cpp


示例11: test_existing

static void test_existing (const btree<V, K> & t, const K k1, const K k2,
                           const K expected_key, const V expected_value)
{
    typename btree<V, K>::query_answer query_result
        = t.range_query (typename btree<V, K>::key_range(k1, k2));
    if (query_result.size() != 1)
    {
        std::cerr << "test_existing: expected_key = " << expected_key << '\n';
        BOOST_CHECK_EQUAL (query_result.size(), 1);
    }
    else
    {
        BOOST_CHECK_EQUAL (query_result[0].first, expected_key);
        BOOST_CHECK_EQUAL (query_result[0].second, expected_value);
    }
}
开发者ID:allogn,项目名称:TOUCH,代码行数:16,代码来源:test.cpp


示例12: packleft

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void packleft(btree<int> &T,btree<int>::iterator n) {
  // Si el arbol esta vacio no hay que hacer nada
  if (n==T.end()) return;
  // `l,r' son los hijos
  btree<int>::iterator l = n.left(), r = n.right();
  // Solo en el caso de que `l' es vacio y `r'
  // no, entonces hay que hacer un splice.
  // Notar que hay que refrescar `l,r'
  if (l==T.end() && r!=T.end()) l = T.splice(l,r);
  r = n.right();
  // Aplica recursivamente a `l' y `r'
  packleft(T,l);
  packleft(T,r);
}
开发者ID:Malows,项目名称:aedcode,代码行数:15,代码来源:packleft.cpp


示例13: comp_btree

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
// Cuando se define una relacion de orden vimos que basta
// con definir <, >, <= o >=.  Una alternativa es una
// funcion `comp(a,b)' que retorna -1 si T1<T2, 0 si T1==T2,
// +1 si T1>T2. (En Perl es el operador `<=>').
// Esta funcion seria el operador `comp' para
// arboles binarios. Ademas, esta implementacion
// permite pasar una funcion de comparacion
// (programacion funcional)
int comp_btree(btree<int> &T1,btree<int>::iterator n1,
	    btree<int> &T2,btree<int>::iterator n2,
	    int (*comp)(int x,int y)) {
  // Si son Lambda => son iguales. 
  if (n1==T1.end() && n2==T2.end()) return 0;
  // Si `n1==end()' y `n2!=end()'
  // entonces `*n1<*n2'. 
  // debe retornar -1. 
  if (n1==T1.end()) return -1;
  // Si `n1!=end()' y `n2==end()'
  // entonces `*n1>*n2'. 
  if (n2==T2.end()) return +1;
  // Si `comp(*n1,*n2)!=0' entonces debe
  // retornar el valor de `comp'
  int v = comp(*n1,*n2);
  if (v) return v;
  // Si `comp_btree(Ai,Bi) != 0' entonces debe
  // retornar el valor.
  v = comp_btree(T1,n1.left(),T2,n2.left(),comp);
  if (v) return v;
  // Retorna el valor `comp_btree(Ai,Bi) != 0'
  return comp_btree(T1,n1.right(),T2,n2.right(),comp);
}
开发者ID:Malows,项目名称:aedcode,代码行数:32,代码来源:comptree.cpp


示例14: foo

///void foo(const btree<int> &b) {
void foo(btree<int> &b) {
  std::copy(b.begin(), b.end(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
}
开发者ID:DanielFortesque,项目名称:ObjectOrientedProgramming,代码行数:5,代码来源:test02.cpp


示例15: huffman

void 
huffman(const vector<double> &prob,btree<int> &T) {
  typedef list<huffman_tree> bosque_t;

  // Contiene todos los arboles
  bosque_t bosque;
  // Numero de caracteres del codigo
  int N = prob.size();
  // Crear los arboles iniciales poniendolos en
  // una lista Los elementos de la lista contienen
  // la probabilidad de cada caracter y un arbol
  // con un solo nodo. Los nodos interiores del
  // arbol tienen un -1 (es solo para
  // consistencia) y las hojas tienen el indice
  // del caracter. (entre 0 y N-1)
  for (int j=0; j<N; j++) {
    // Agrega un nuevo elemento a la lista
    bosque_t::iterator htree = 
      bosque.insert(bosque.begin(),huffman_tree());
    htree->p = prob[j];
    htree->T.insert(htree->T.begin(),j);
  }

  // Aqui empieza el algoritmo de Huffman.
  // Tmp va a contener el arbol combinado
  btree<int> Tmp;
  for (int j=0; j<N-1; j++) {
    // En la raiz de Tmp (que es un nodo interior)
    // ponemos un -1 (esto es solo para chequear).
    Tmp.insert(Tmp.begin(),-1);
    // Tmp_p es la probabilidad del arbol combinado
    // (la suma de las probabilidades de los dos subarboles)
    double Tmp_p = 0.0;
    // Para `k=0' toma el menor y lo pone en el
    // hijo izquierdo de la raiz de Tmp. Para `k=1' en el
    // hijo derecho. 
    for (int k=0; k<2; k++) {
      // recorre el `bosque' (la lista de arboles)
      //  busca el menor. `qmin' es un iterator al menor
      bosque_t::iterator q = bosque.begin(), qmin=q;
      while (q != bosque.end()) {
	if (q->p < qmin->p) qmin = q;
	q++;
      }
      // Asigna a `node' el hijo derecho o izquierdo
      // de la raiz de `Tmp' dependiendo de `k'
      btree<int>::iterator node = Tmp.begin();
      node = (k==0 ? node.left() : node.right());
      // Mueve todo el nodo que esta en `qmin'
      // al nodo correspondiente de `Tmp'
      Tmp.splice(node,qmin->T.begin());
      // Acumula las probabilidades
      Tmp_p += qmin->p;
      // Elimina el arbol correspondiente del bosque. 
      bosque.erase(qmin);
    }
    // Inserta el arbol combinado en el bosque
    bosque_t::iterator r = 
      bosque.insert(bosque.begin(),huffman_tree());
    // Mueve todo el arbol de `Tmp' al nodo
    // recien insertado
    r->T.splice(r->T.begin(),Tmp.begin());
    // Pone la probabilidad en el elemento de la
    // lista
    r->p = Tmp_p;
  }
  // Debe haber quedado 1 solo elemento en la lista
  assert(bosque.size()==1);
  // Mueve todo el arbol que quedo a `T'
  T.clear();
  T.splice(T.begin(),bosque.begin()->T.begin());
}
开发者ID:Malows,项目名称:aedcode,代码行数:72,代码来源:huf.cpp


示例16: test_nonexisting

static void test_nonexisting (const btree<V, K> & t, const K k1, const K k2)
{
    typename btree<V, K>::query_answer query_result
        = t.range_query (typename btree<V, K>::key_range(k1, k2));
    BOOST_CHECK_EQUAL (query_result.size(), 0);
}
开发者ID:allogn,项目名称:TOUCH,代码行数:6,代码来源:test.cpp



注:本文中的btree类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ buf_t类代码示例发布时间:2022-05-31
下一篇:
C++ btVector3类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap