Re: [問題] vector當array傳 該怎作

看板C_and_CPP (C/C++)作者 (狗腿)時間16年前 (2010/04/30 16:31), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《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

04/30 16:36, , 1F
1.還是有很多function只吃address 2.element數量是size()
04/30 16:36, 1F
※ 編輯: nedbob 來自: 140.135.11.175 (04/30 16:41) ※ 編輯: nedbob 來自: 140.135.11.175 (04/30 16:42)

04/30 17:40, , 2F
這問題通常出現在與 C API 互相配合的時候
04/30 17:40, 2F

04/30 17:40, , 3F
所以沒辦法直接傳物件的 reference
04/30 17:40, 3F

04/30 17:46, , 4F
你指的傳ref是傳vector的ref??
04/30 17:46, 4F

04/30 17:46, , 5F
如果是的話~~那也要我能修改那API呀@@他只吃[]的話沒辦法吧??
04/30 17:46, 5F

04/30 18:19, , 6F
只吃[]的話,確保途中不會reallocation的話應該還好
04/30 18:19, 6F
文章代碼(AID): #1BsfLq4_ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BsfLq4_ (C_and_CPP)