[問題] 如何將pointer指向list

看板C_and_CPP (C/C++)作者 (兌現承諾)時間15年前 (2010/10/21 20:56), 編輯推噓4(4047)
留言51則, 5人參與, 最新討論串1/1
如何將pointer指向list呢? 錯誤的程式碼如下 #include <iostream> #include <list> #include <vector> using namespace std; int main() { list<double> MyList(5,1); vector<double*> MyVector; MyVector.resize(MyList.size()); list<double>::iterator it; it = MyList.begin(); MyVector[0] = it; 我想用pointer去改list的值 return 0; } 感謝啦!相關的概念並不很清楚 = = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.11.75 ※ 編輯: luckychild 來自: 140.120.11.75 (10/21 20:56)

10/21 22:08, , 1F

10/21 22:51, , 2F

10/21 23:32, , 3F
雖然 MyVector[0] = &*it; 就可以, 不過這在遇到有重
10/21 23:32, 3F

10/21 23:33, , 4F
載...沒事@_@
10/21 23:33, 4F

10/22 11:59, , 5F
可以教我相關概念嗎 謝謝囉!
10/22 11:59, 5F

10/22 12:05, , 6F
non-const迭代器如果用*去取值, 得到的是該元素本身,
10/22 12:05, 6F

10/22 12:05, , 7F
再做 & 運算就可以得到它的位置了, 不過你這樣玩假如
10/22 12:05, 7F

10/22 12:06, , 8F
MyList先解構掉任何元素, MyVector那些指標都不能用了
10/22 12:06, 8F

10/22 13:14, , 9F
get_allocator
10/22 13:14, 9F

10/22 13:42, , 10F
謝謝,要了解這些東西該讀那些東西?
10/22 13:42, 10F

10/22 13:43, , 11F
是不是該讀一些STL的書呀?有推薦的書籍嗎?
10/22 13:43, 11F

10/22 13:45, , 12F
我不是資訊相關的學生,常常遇到程式上的觀念問題 = =
10/22 13:45, 12F

10/22 13:48, , 13F
其實我比較好奇 為什麼你需要做這麼複雜的事情...
10/22 13:48, 13F

10/22 13:49, , 14F
可能沒辦法說得很清楚,但是我盡量
10/22 13:49, 14F

10/22 13:51, , 15F
另外,唸書的話可以從C++ Primer開始
10/22 13:51, 15F

10/22 13:52, , 16F
STL, 已經是學C++必須要了解的工具, 清楚template的簡
10/22 13:52, 16F

10/22 13:52, , 17F
單語法後, 可以試著看這本 http://ppt.cc/tDmk 內函許
10/22 13:52, 17F

10/22 13:53, , 18F
多基本「觀念」
10/22 13:53, 18F

10/22 13:53, , 19F
我在做粒子交互作用的模擬,需要把模擬空間切方塊來計算
10/22 13:53, 19F

10/22 13:55, , 20F
彼此的交互作用力,若不切方塊分區計算而是全域1對1
10/22 13:55, 20F

10/22 13:56, , 21F
計算,會浪費很多時間
10/22 13:56, 21F

10/22 13:59, , 22F
喔對了,請參見 http://0rz.tw/SRpYU
10/22 13:59, 22F

10/22 14:00, , 23F
一開始我有4個list個存放很多粒子(物件)
10/22 14:00, 23F

10/22 14:00, , 24F
這個程式碼你看得懂好強 XD
10/22 14:00, 24F

10/22 14:02, , 25F
我需要計算這4個list內的粒子的受力大小,又想利用網址
10/22 14:02, 25F

10/22 14:02, , 26F
呈現的方法,有點像linked list
10/22 14:02, 26F

10/22 14:04, , 27F
所以我需要將4個list存到一個有編號的容器
10/22 14:04, 27F

10/22 14:05, , 28F
那我就在vector存好指標,將這些指標指向list,來計算或
10/22 14:05, 28F

10/22 14:05, , 29F
過更動list內物件的data
10/22 14:05, 29F

10/22 14:07, , 30F
這是問題的來源.當然我也可以用4個vector來儲存粒子啦
10/22 14:07, 30F

10/22 14:07, , 31F
至少vector我比較熟悉,可能就不會有上述問題
10/22 14:07, 31F

10/22 14:09, , 32F
不過vector可以隨便刪除任意元素嗎?好像不行?
10/22 14:09, 32F

10/22 14:10, , 33F
但list可以?
10/22 14:10, 33F

10/22 14:11, , 34F
我看不懂網址的程式碼啦,但是我知道這個方法大概在做啥
10/22 14:11, 34F

10/22 14:13, , 35F
C++ PRIMER我有但是還沒翻過.等project告一段落才有
10/22 14:13, 35F

10/22 14:13, , 36F
時間學程式吧?
10/22 14:13, 36F

10/22 14:14, , 37F
vector通常記憶體空間是連續的, 刪除/加入元素會造成
10/22 14:14, 37F

10/22 14:15, , 38F
我一直停留在洪維恩的書的程度 哈!
10/22 14:15, 38F

10/22 14:15, , 39F
重配置整塊記憶體, 且元素移動後, 指標就失效了
10/22 14:15, 39F

10/22 14:17, , 40F
http://www.cplusplus.com/reference/這個網站幫我很多
10/22 14:17, 40F

10/22 14:17, , 41F
不過我都看不懂他在寫什麼,都要從例子推敲一下
10/22 14:17, 41F

10/22 14:19, , 42F
explicit vector ( const Allocator& = Allocator() );
10/22 14:19, 42F

10/22 14:19, , 43F
像類似的東西 我都看不懂 該學些什麼
10/22 14:19, 43F

10/22 14:23, , 44F
請搭配這個服用 http://ppt.cc/iIdT 有很多C++ primer
10/22 14:23, 44F

10/22 14:23, , 45F
就有寫了, 先了解語言特性, 再去看例子會比較好
10/22 14:23, 45F

10/22 14:24, , 46F
explicit 是防止編譯器幫我們自動作轉型, stl 容器內
10/22 14:24, 46F

10/22 14:26, , 47F
都會有一個物件被用來建構/解構物件、配置/歸還記憶體
10/22 14:26, 47F

10/22 14:26, , 48F
實際上是一些靜態函式的封裝而已, 你可以自訂一些建構
10/22 14:26, 48F

10/22 14:27, , 49F
解構跟記憶體管理的方法, 包裝成類別, 讓特定容器使用
10/22 14:27, 49F

10/22 14:27, , 50F
謝謝你啦~
10/22 14:27, 50F

10/22 14:27, , 51F
你的規則, 達到客製化的效果
10/22 14:27, 51F
文章代碼(AID): #1Cm3XYwI (C_and_CPP)
文章代碼(AID): #1Cm3XYwI (C_and_CPP)