トップ «前の日記(2008-03-20) 最新 次の日記(2008-03-22)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

ToDo:


2008-03-21

_ ふう

やはしオーバーフローだった。 予想よりはるかにデカい問題がありえるんだな。

とりあえず修正したので良しとする。 今日の思いつきはほぼ全て役立たずだったな。

(00:16)

_ priority_queue

#include <vector>
#include <set>
#include <queue>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
int main() {
    cout << "vec\n";
    vector<int> v;
    v.push_back(3);
    v.push_back(2);
    v.push_back(4);
    sort(v.begin(), v.end());
    copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\n"));

    cout << "set\n";
    set<int> s;
    s.insert(3);
    s.insert(2);
    s.insert(4);
    copy(s.begin(), s.end(), ostream_iterator<int>(cout, "\n"));

    cout << "pq\n";
    priority_queue<int> q;
    q.push(3);
    q.push(2);
    q.push(4);
    while (!q.empty()) {
        cout << q.top() << endl;
        q.pop();
    }
}

実行結果

vec
2
3
4
set
2
3
4
pq
4
3
2

わからんでもないけど、 priority_queue だけ逆か…

(00:34)

_ りすぷ

soiya

(defun delete-line (&optional arg)

 (interactive "P")
 (progn
   (kill-line arg)
   (pop kill-ring)
   (if (not (= (point) (save-excursion (end-of-buffer) (point))))
       (delete-char 1)
      )))

こういうかんじで emacs-lisp 書いてたら、 死ねとかアホとかいう趣旨のことを言われた。

なんか最後の ))) のは後ろのにひっつけないといけないらしい。

まぁその方が美的に良さそうかなぁとは同意できるんだけど、 書いてる最中に括弧閉じてテストしてみて うまく動いたら再開…とかやってる時に、 括弧の対応的に適切な場所探すのめどいじゃん とか思ったのだった。

それと同様なのかはわからんけど、 Python で if とかが並んだ後に 一気にネスト戻す時に、 どこまで空白消せばいいのかイマイチわからん。

(01:49)

本日のツッコミ(全5件) [ツッコミを入れる]
_ あろは (2014-05-24 02:59)

emacs な人たちは,S 式単位でカーソルを移動したり,切り貼りとかしてるんですよね,たぶん.括弧の対応とか,見てないと思います.S 式が一文字,みたいな感覚なのかと (たぶん)
http://www.geocities.co.jp/SiliconValley-SanJose/7474/LispDevelopEnvironment.html

_ kinaba (2014-05-24 02:59)

しかも比較演算の指定が第2じゃなくて第3テンプレート引数なので、小さい順にするには
priority_queue<int, vector<int>, greater<int> >
こうしないといけなくて大変めんどいという。
個人的には、vector<bool> と並ぶSTL最大の設計ミスな気がしてます。

_ (2014-05-24 02:59)

emacs に (show-paren-mode t) とか書いてみるとどうでしょう
対応するカッコをハイライトして表示するようになりますが

_ mame (2014-05-24 02:59)

以前僕が書いていた Scheme のコードは

(foo
 (bar
  (baz)
 )
)

みたいなインデントでした。
カーソル移動しながら括弧の対応見ればいいんだけど、
他の言語に慣れてると、括弧の対応を把握してから移動
したかったのです。

_ shinh (2014-05-24 02:59)

> kinaba さん

そうそれもめんどいですね。 template template 使って priority_queue<int, vector, greater<int> > とかならなんぼかマシなのにな…と。しかしまぁめんどいのを設計ミスと言ってしまうと STL なんて全部設計ミスではないか…! とか。

> あろはさん
> けさん

括弧の対応取りは vi の方がラクなくらいですね(デフォのキーバインドが簡単なので)。まぁこのあたりのキーバインドは覚えておこうと思います…

で show-paren-mode は普通に使ってますが、ハイライトさせる→移動を決定、みたいな感じでワンテンポはさまるのがどうもうまくない感じです。

あとなんか、括弧対応取りのキーバインド覚えたとしても、

(defun hoge ()
 (hoge
   (foo
     (bar
       (baz)))))

とかの最後の部分にカーソルがあったら結局ハイライト見ないと foo と同じネストで書き足していくとかは難しいんじゃないかなー、とか。

> まめさん

たしかにそこまで割り切っちゃえばいい気もしますね。そう書いたからって失うものも特に無いですし。ただ、上記の記述の時にはこう、かなり強く罵倒されたような気がしていまして、トラウマです。もうこわくてりすぷとかかけません。

僕のコードは何やら中途半端さがあふれております。

http://shinh.skr.jp/geister/geister.scm

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2008年
3月
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
1.shinh(2014-05-24 02:59) 2.kosaki(2014-05-24 02:59) 3.shinh(2014-05-24 02:59)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h