[問題] 想請問c++有像c#可以矩陣擴增的語法嗎

作者: kkinyao666 (胖胖)   2014-05-08 16:06:53
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我的意思是假如我有一個矩陣A=[1 2 3 4 5]矩陣不能更改
那我想要在矩陣前加入數值讓A=[O O O O 1 2 3 4 5]
是不是有什麼方法?
在書上很像沒有看過@@
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
作者: Killercat (殺人貓™)   2014-05-08 16:08:00
用std::vector
作者: kwk22   2014-05-08 21:13:00
重新配置記憶體?
作者: kwpn (ITSST)   2014-05-08 21:19:00
除了靜態陣列, 其他所有方法都可以吧.
作者: loveme00835 (髮箍)   2014-05-08 23:46:00
你的C++應該沒辦法
作者: damody (天亮damody)   2014-05-09 02:40:00
1. 冷靜 2. c++沒有專門的語法
作者: Killercat (殺人貓™)   2014-05-09 03:22:00
不過還是覺得std::vector幫你處理掉大部份的operator[]的語意上問題 真的要說最佳解的話 這應該排得上候選 :D
作者: carylorrk (carylorrk)   2014-05-09 03:50:00
推vector是認真的嗎~
作者: Killercat (殺人貓™)   2014-05-09 04:08:00
相當認真啊...vector本來就可以這樣用 o_oa二維就用vector<vector<int> > 取值一樣可以c[a][b]vector唯一的問題就是邊界要自己管理(如果需要的話)然後vector很貼心的幫你用operator&讓你能轉回傳統arrayint* array = &v[0]; 好vector 不用嗎 XD
作者: bbearh (Change)   2014-05-09 23:14:00
GlobalReAlloc
作者: uranusjr (←這人是超級笨蛋)   2014-05-10 03:33:00
原問題是 prepend 耶, std::vector 超不適合好嗎...
作者: EdisonX (卡卡獸)   2014-05-10 13:04:00
@uranusjr,借問題我想問一般若已基於陣列,功能必要加入prepend,會怎做? 是否沒什麼優化的空間了 ?我的作法頗暴力就是了 Orz
作者: Killercat (殺人貓™)   2014-05-11 14:53:00
vector可prepend 不過的確,效能會很糟糕....
作者: uranusjr (←這人是超級笨蛋)   2014-05-11 20:33:00
如果一定要記憶體位址連續那也沒什麼招了吧, 或許可以模仿 std::vector 自己做一個前後都 preallocate 的容器..?
作者: Killercat (殺人貓™)   2014-05-11 21:44:00
這個我以前做過 用circular buffer來實作std::vector的界面,然後跟std::vector一樣的記憶體雙倍策略然後用memory pool來處理所有的segment management我記得有人有做過類似的東西,不算少見。只是這太深了不過基本上要解決效率問題 circular buffer是個解有興趣可以做做看 反正vector source code都放在那給你抄,最麻煩的幾個部分如[]等等眉眉角角照著寫就好這東西真的要討論我覺得要去演算法版討論了 =P
作者: AstralBrain   2014-05-11 23:09:00
to樓上:為什麼不用std::deque就好 XD
作者: Killercat (殺人貓™)   2014-05-12 11:37:00
欸,對耶,當初是為什麼要搞的那麼麻煩(抱頭)是因為要放memory pool的關係嗎...

Links booklink

Contact Us: admin [ a t ] ucptt.com