Re: [問題] 程式中的空白處會影響程式本身嗎?
※ 引述《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
04/11 00:51, 1F
推
04/11 01:13, , 2F
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
04/11 02:04, 5F
推
04/11 07:42, , 6F
04/11 07:42, 6F
推
04/11 11:44, , 7F
04/11 11:44, 7F
→
04/11 11:44, , 8F
04/11 11:44, 8F
→
04/11 11:48, , 9F
04/11 11:48, 9F
推
04/11 14:14, , 10F
04/11 14:14, 10F
→
04/11 16:19, , 11F
04/11 16:19, 11F
→
04/11 16:19, , 12F
04/11 16:19, 12F
→
04/11 16:22, , 13F
04/11 16:22, 13F
→
04/11 16:26, , 14F
04/11 16:26, 14F
推
04/11 17:41, , 15F
04/11 17:41, 15F
→
04/11 17:58, , 16F
04/11 17:58, 16F
→
04/11 22:51, , 17F
04/11 22:51, 17F
推
04/11 22:53, , 18F
04/11 22:53, 18F
→
04/11 22:54, , 19F
04/11 22:54, 19F
→
04/11 22:55, , 20F
04/11 22:55, 20F
→
04/11 22:55, , 21F
04/11 22:55, 21F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章