根據boost::tuple documentation,訪問元組的單個元素的性能與訪問成員變量的性能相同。例如,給定下面的聲明:提升元組性能
tuple<A, B, C> t1(A(), B(), C());
struct T { A a; B b; C c; }
T t2;
這兩句話應該等於(或微小差別)性能:
t1.get<2>();
t2.c;
我看着提升的來源::元組,如果我瞭解他們正確的(我不知道我做了),get<N>
功能實際上執行此操作:
C get<2>(tuple<A, B, C>& t)
{
return t.tail.tail.head;
//Generally: return t.tail. <<N times>> .head;
}
這更類似於一個鏈表查找比DIR ect訪問,並且,就我而言,具有O(N)複雜性而不是O(1),這是從成員訪問中預期的。從過去的經驗來看,我認爲我錯了;但是我的錯誤是什麼? get
如何運作?
我猜這很大程度上依賴於編譯時優化 – Bwmat 2010-11-29 08:36:20