作者WSzc (WSzc)
看板C_and_CPP
標題[問題] 關於vector pointer
時間Fri Jun 19 01:04:43 2009
請問一下 如果有下列這個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
1F:推 ianfang:我只能說...你確定學過pointer嗎? 你的A[2]是*(A+2)耶 06/19 01:15
2F:→ ianfang:不是vector裡的第3個元素... 06/19 01:16
3F:→ ianfang:你要的是 (*A)[2]吧... 沒試過語法 應該沒錯 06/19 01:18
4F:→ WSzc:我的A[2]是*(A+2)沒錯 我是要拿vector的第一個元素 用front() 06/19 01:22
5F:→ WSzc:等於是二維的 第一維存A有多少個 第二維存每個A裡頭的元素 06/19 01:25
6F:推 ianfang:那簡單...你需要的是vector<int>** A; 06/19 01:41
7F:→ ianfang:還有你前半段的問題 A[2]本來就是要用.呼叫push_back 06/19 01:43
8F:推 ianfang:這是基礎語法 06/19 01:44
9F:→ WSzc:喔喔 因為vector<int>* A不能改 所以我才用array 喔我原本以 06/19 01:50
10F:→ WSzc:為A[2]也是個pointer 所以想說會用->呼叫 06/19 01:51
11F:推 aecho:vector<int *> A; int *B; ... 06/19 09:55