DAVIDOWITCH: tak jako sorry, ale tohle je zase flejm pro flejm... úplně zbytečný.
pochopitelně se o počítadle referencí (reference counter) mluví vždy v souvislosti se syntaktickými konstukcemi jazyka, ve kterém jsou ony reference na cosi vytvářeny a v souvislosti s okolnostma, kdy se tím počítadlo hejbá nahoru nebo dolů - vykládat o tom, že se v tom nemusí mluvit v souvislosti s takovými konstrukcemi, je bohapustý flejm - potom samozřejmě v každém jazyce můžeš použít jakoukoliv konstrukci, a samozřejmě je vymalováno, že jo.
Pokud jsou počítadla odkazů v C++ v zásadě špatně, pokud nepoužiješ nějaký speciální typ pointerů, u kterého se při opuštění aktuální scope zavolá destruktor, který by stav počítadla snížil - pak sorry, tohle je problém, který si musí C++ programátoři nějak vyřešit sami a mě do toho netahat. v žádném jiném vyšším jazyce se takový pojem pokud vím nepoužívá (protože je to tam jaksi automatické, to snížení toho reference counteru, když reference opustí scope, že ...). (Příkladem jazyků, kde očekávám, že je tohle řešené automaticky, je Python nebo Java - pokud se mýlím, tak mě TEĎ opravte, teď to nebude chytání za slovíčko...)
O tom je to "ne nutně C++" které je uvedené v názvu - o některých programátorských konstrukcích lze diskutovat, aniž by člověk nutně věděl, jak je to udělané v C++ a jak se tomu tam říká.
... a u té složitosti BINÁRNÍHO B+ stromu (diskutovaná datová struktura byla BINÁRNÍ B+ strom, ne obyčejný) šlo o složitost přidávání prvku - ne procházení. procházení musí být pochopitelně logaritmické. A přidávání je jediné, co na té datové struktuře nebylo jasné, a proč jsem se v první řadě chtěl s někým radit (a opět - složité na tom vlastně bylo jen to, že pro to přidávání nechci použít rekurzi...).