作者nedbob (狗腿)
看板C_and_CPP
標題Re: [問題] vector當array傳 該怎作
時間Fri Apr 30 16:31:45 2010
※ 引述《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