[問題] 關於vector pointer

看板C_and_CPP作者 (WSzc)時間16年前 (2009/06/18 17:04), 編輯推噓4(407)
留言11則, 3人參與, 最新討論串1/1
請問一下 如果有下列這個vector pointer: vector<int>* A; 如果是直接要存data的話 我可以 A->push_back(xxx) 但是如果我想要把data存在array A中 像是存到A[2] 那為何要assign時就會變成 A[2].push_back(xxx) ? 因為這樣的話就不是pointer了 基於一些原因 我需要將這pointer assign給另一個pointer用 試過用reference之類的方式接收 可是後面的運算會把他改到 所以還是想請教一下有沒有辦法讓array vector也是pointer呢 就是可以做到類似像下面這件事 (當然這樣寫compile不會過) int *B; vector<int>* A; B = A[2]->front(); 謝謝回答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.45.94

06/19 01:15, , 1F
我只能說...你確定學過pointer嗎? 你的A[2]是*(A+2)耶
06/19 01:15, 1F

06/19 01:16, , 2F
不是vector裡的第3個元素...
06/19 01:16, 2F

06/19 01:18, , 3F
你要的是 (*A)[2]吧... 沒試過語法 應該沒錯
06/19 01:18, 3F

06/19 01:22, , 4F
我的A[2]是*(A+2)沒錯 我是要拿vector的第一個元素 用front()
06/19 01:22, 4F

06/19 01:25, , 5F
等於是二維的 第一維存A有多少個 第二維存每個A裡頭的元素
06/19 01:25, 5F

06/19 01:41, , 6F
那簡單...你需要的是vector<int>** A;
06/19 01:41, 6F

06/19 01:43, , 7F
還有你前半段的問題 A[2]本來就是要用.呼叫push_back
06/19 01:43, 7F

06/19 01:44, , 8F
這是基礎語法
06/19 01:44, 8F

06/19 01:50, , 9F
喔喔 因為vector<int>* A不能改 所以我才用array 喔我原本以
06/19 01:50, 9F

06/19 01:51, , 10F
為A[2]也是個pointer 所以想說會用->呼叫
06/19 01:51, 10F

06/19 09:55, , 11F
vector<int *> A; int *B; ...
06/19 09:55, 11F
文章代碼(AID): #1AEdEi8i (C_and_CPP)