看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 大家好 : 有個小疑問 : 假如我並不知道使用者會輸入多少個資料 : 有個vector<Vector3> DataList; : 通常win32 API也不會叫我們傳vector : 所以如果有個函式Foo (吃 Vector3[]) : 大家都是傳 &DataList[0]?? 用C++了 就用call by reference 不要傳第一個element的位址 : 還是什麼方式? 如果上面這樣傳會不會有什麼風險~ : 當然API一定也會叫我們傳 有幾個element vector::size - Returns number of elements in the vector. vector::capacity - Returns current capacity (allocated memory) of vector 用size 感謝修正 : 所以這樣寫應該OK吧?? : 還是有淺在的問題 例如說 vector realloc了 : 這API可能會一直對於原本你傳的&DataList[0] 位址 對值作判斷~ : 這樣應該就壞了??? 因為不是傳element的位址所以reallocation不影響 : 如果不用vector 我想到的就只有宣告超大陣列..但這一定不好 : 是我多慮了 還是本來就不該這樣傳@@? : thx 以上是我對vector的了解 不知道有沒錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.11.175
james732:1.還是有很多function只吃address 2.element數量是size() 04/30 16:36
※ 編輯: nedbob 來自: 140.135.11.175 (04/30 16:41) ※ 編輯: nedbob 來自: 140.135.11.175 (04/30 16:42)
littleshan:這問題通常出現在與 C API 互相配合的時候 04/30 17:40
littleshan:所以沒辦法直接傳物件的 reference 04/30 17:40
QQ29:你指的傳ref是傳vector的ref?? 04/30 17:46
QQ29:如果是的話~~那也要我能修改那API呀@@他只吃[]的話沒辦法吧?? 04/30 17:46
xtxml:只吃[]的話,確保途中不會reallocation的話應該還好 04/30 18:19