看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《sd016808 ()》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : BCBXE : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 傳遞二維vector時,利用一維的pointer來指向vector : 在function裡使用時,是否由於不同維度的vector記憶體不一定連續? : 導致pointer在offset的時候沒有移動到正確的位置? : //補充 : 因為要在BCB下使用CUDA,所以我function是寫在.cu 然後包成dll 在用BCB呼叫 : CUDA好像不能用stl vector 所以我才會用pointer去指向vector : 餵入的資料(Input): : vector < vector <int> > a; : a.resize(10); : for( int i=0; i<a.size(); i++ ) : { : a[i].resize(10); : } : compute(&a[0][0]); : cout << a[2][2]; //不等於1 : void compute(int *b) : { : //取得a[2][2]的值 : b[2*10+2]=1; : } : 預期的正確結果(Expected Output): : 1 : 錯誤結果(Wrong Output): : 每次執行都不一樣 【原始代碼】:https://gist.github.com/johnhmj/5721212 *. MyData d(168) 等於 MyData d = 168(因為 d 為 int) *. _VectorSize 10 請依需求修改它的大小 *. 結構 Vvloc 兩個正整數包在一起比較好辨識 *. Vvint& _vv 容器或是物件在函式都是引入參照 *. void W32Tester::Pause(void) 這個不用理它,這只是暫停而已 *. 其他部分請依需求修改 -- To 小天使: 小天使小天使(∩_∩)可以給我抱一下嗎? ★███小天使 可以啊~(抱) To 小天使: 哇~( ̄y▽ ̄)╭好棒喔~終於抱到小天使了~哈哈 ★███小天使 >////< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.158.67.187
sd016808:感謝j大花時間回復 不過我現在發現我連傳遞vector到DLL中 06/07 16:34
sd016808:都有問題... 06/07 16:34
sd016808:傳進去後的size內容都不對 06/07 16:36