在我做了sqlite3_prepare_v2()
的一個聲明之後,我需要sqlite3_step()
吧。sqlite3_step和結果數
目前,我們忽略除SQLITE3_ROW
和SQLITE3_DONE
之外的所有返回值。
只要sqlite3_step()
的返回值是SQLITE3_ROW
,我需要繼續調用它,直到我得到所有結果。那麼最後的返回值將是SQLITE3_DONE
。
我正在使用push_back()
將我的結果輸入std::vector
。
從我讀過的,這應該有平均複雜度爲O(log(n))由於矢量的內部數組的大小調整。爲了將這種複雜性降低到O(1),我需要使用矢量的reserve()
,然後再做push_back()
。
但是,然後從sqlite3 API,我看不到一個函數,返回結果的總數,我會得到它之前,我sqlite3_step()
它。
我該怎麼用sqlite3做到這一點?
不,這不是瓶頸,做一個'SELECT COUNT'和一個'reserve()'可能比只用'push_back()'而不用'reserve()'要慢。我正在使用GNU STL。 – ruben2020
我只是想知道是否有一種廉價的方法來找出結果的數量,以便我可以做我的微型優化,但是如果'SELECT COUNT'是唯一的方法,那麼這對我的目的來說太貴了,因爲它會做另一個SQL查詢的編譯。是的,我知道沒有必要在不必要的地方過度優化。 – ruben2020
@ ruben2020非常好。然後,你跳轉到'goto'指令:) – 2013-07-11 17:03:55