ToDo:
http://d.hatena.ne.jp/yshl/20090103#1230992412
ふむふむありがたや。 とりあえずインストールしたけど 拡張子は mac でいいのかなぁ。
(01:57)
size_t が under flow してしまう問題は
#include <vector> using namespace std; int main() { vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for (size_t i = 0; i < v.size(); i++) { printf("%d\n", v[i]); } for (size_t i = v.size()-1; i < v.size(); i--) { printf("%d\n", v[i]); } }
というのをイディオムにするという手を思いついた。 意図はどうしようもなくわかりにくいけど、 コードの変更少なくループを逆転できるのは魅力的…
(11:43)
前 | 2009年 1月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
Maxima の拡張子ですが、/usr/share/maxima/ 以下にインストールされたファイルの拡張子が mac や dem になっていて、dem はデモ用のファイルのようだったので、mac にしてみました。
ただ、vim は拡張子が mac の場合デフォルトではアセンブリと判定するようなので、mac をアセンブリ用に使う人を考えると max 等にした方が無難かもしれません。
その mac は macro の mac じゃないかなぁ…とか思って気がひけていました。最も無難なのは maxima ですかねえ…
(size_t)-1 と比較するのではダメなのでしょうか? それを避けたい、ということでしたらすみません。
for (size_t i = v.size() - 1; i != (size_t)-1; i--)
1刻みなら、
for (size_t i = v.size(); i--; )
ループ内の処理によっては、sizeのリロードも減ってお得な感じ、とか。
ありがとうございます。色んな流儀があるものですね…元々書いた時の心境は、インクリメントしてるループをデクリメントに変える時に、3個所変える場所があると間違えがちだけど、こう書くと2個所ですむんだなぁ、とか思ったんじゃないかと思います。いくらでも宗教論争できそうで楽しい部分ですね…