Re: [問題] 程式中的空白處會影響程式本身嗎?

看板C_and_CPP (C/C++)作者 (眠月)時間15年前 (2011/04/11 00:34), 編輯推噓9(9012)
留言21則, 9人參與, 最新討論串4/4 (看更多)
※ 引述《loveme00835 (朴髮箍)》之銘言: > 當然引數超過一頁斷行也是必須. > 加長的手法像是加上識別字: > std::copy( vec.begin(), vec.end(), std::ostream_iterator<int>(cout) ); > 雖然這樣不超過一頁, 但我還是習慣將第三個引數寫在下一行. > 另外, 縮短也是有好處的: > #define each(container) (container).begin(), (container).end() > std::copy( each(vec), std::ostream_iterator<int>(cout) ); 感謝分享,只好來火力支援一下,boost::range 可以直接寫。 boost::copy ( vec, std::ostreamiterator<int>(cout) ) ; 第一個參數並不是 container,而是 range, 因為 container 可以自動轉成一個 range, 所以可以直接把 contaner 傳進演算法。 什麼是 range 請看這邊 http://tinyurl.com/43tl4ar, 懶的看的話其實基本上就是設計來取代 iterator 的東西, 實質上是 pair of iterators,把一對 iterator 包裝起來, 更重要的是把跟 iterator 相關的操作也包裝起來, 於是很多東西用 range 作會非常簡潔易讀(相較於 iterator 而言)。 以 boost::range 裡面提供的範例, 如果我今天不只想要拷貝這個 vec,而且我想要反序拷貝,我只需要寫 boost::copy ( vec | boost::adaptors::reversed, std::ostream_iterator<int>(std::cout) ) ; 如果我不但想要反序拷貝,而且我只想拷貝 unique 的元素,可以寫 boost::copy( vec | boost::adaptors::reversed | boost::adaptors::uniqued, std::ostream_iterator<int>(std::cout) ); 不僅易讀,且因為只是 adaptor,不需作出實體, 所以記憶體使用跟校能也都很好。 請大家多多愛用。 -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.118.86

04/11 00:51, , 1F
感謝! 好奇有沒有把array包裝起來的方法
04/11 00:51, 1F

04/11 01:13, , 2F
找到了! 原來是漏看 :P
04/11 01:13, 2F

04/11 01:24, , 3F
之前還自己寫...
04/11 01:24, 3F

04/11 01:58, , 4F
太誇張了=口=
04/11 01:58, 4F

04/11 02:04, , 5F
boost 真是什麼都有 XD
04/11 02:04, 5F

04/11 07:42, , 6F
推 boost 真的是一座寶山
04/11 07:42, 6F

04/11 11:44, , 7F
很多寶 不過有沒有啥方法可以簡單抽出來用啊
04/11 11:44, 7F

04/11 11:44, , 8F
每次都被抱怨用了太肥的lib 0rz
04/11 11:44, 8F

04/11 11:48, , 9F
boost有些header檔應該可以直接拿來用?
04/11 11:48, 9F

04/11 14:14, , 10F
不是有些..boost大概有八成的library都是header only吧
04/11 14:14, 10F

04/11 16:19, , 11F
對了,文中連結強力推薦看一下,是 Andrei Alexandrescu 在
04/11 16:19, 11F

04/11 16:19, , 12F
2009 boostcon 演講的內容,裡面對 range 有很清楚的介紹
04/11 16:19, 12F

04/11 16:22, , 13F
文中講到很多現有iterator的缺點,以及為什麼需要range
04/11 16:22, 13F

04/11 16:26, , 14F
看完會很期待range趕快加入標準 (LOL)
04/11 16:26, 14F

04/11 17:41, , 15F
可是C++0x不是已經final draft了嗎 (挖鼻
04/11 17:41, 15F

04/11 17:58, , 16F
再等 15 年 XD
04/11 17:58, 16F

04/11 22:51, , 17F
再看看 range-based for 吧, 沒有語言的基本支援, 光
04/11 22:51, 17F

04/11 22:53, , 18F
靠庫還是不夠, 像此例要靠重載運算子, 雖然操作像是
04/11 22:53, 18F

04/11 22:54, , 19F
旗標, 但是仔細看運算元, 語義根本不一樣, 就如 h 大
04/11 22:54, 19F

04/11 22:55, , 20F
所說, 我在用 doc 上的範例時不只需要 header, VS還跟
04/11 22:55, 20F

04/11 22:55, , 21F
我講需要連結 RegEx ...真是不解
04/11 22:55, 21F
文章代碼(AID): #1DeTlxGo (C_and_CPP)
文章代碼(AID): #1DeTlxGo (C_and_CPP)