void vector::push_back(value_type item) { if (sz == __size) { __enlarge(); } try { new((void *) (a + sz)) value_type(item); sz++; }catch(...){ (a+sz)->~basic_string(); } }
void deque::push_back(value_type item) { if (sz == __size) { __enlarge(); } try { new((void *) ((&*(tail + 1)))) value_type(item); sz++; tail++; } catch (...) { (&*(tail + 1))->~basic_string(); } }
int avltree_insert(avltree_t* me, void* k, void* v) { int i; node_t* n; for (i = 0; i < me->size; ) { n = &me->nodes[i]; /* found an empty slot */ if (!n->key) { n->key = k; n->val = v; me->count += 1; return i; } long r = me->cmp(n->key, k); if (r == 0) { /* we don't need to rebalance because we just overwrite this slot */ n->val = v; return i; } else if (r < 0) { i = __child_l(i); } else if (r > 0) { i = __child_r(i); } else { assert(0); } } /* we're outside of the loop because we need to enlarge */ __enlarge(me); n = &me->nodes[i]; n->key = k; n->val = v; me->count += 1; return i; }