作者johnhmj (耗呆肥羊)
看板C_and_CPP
標題Re: [問題] vector<T>元素的位址關係跟陣列的不同
時間Thu Jun 6 20:53:21 2013
※ 引述《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