<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>POSIXSpawnType</key> <string>Interactive</string> <key>EnableTransactions</key> <true/> <key>Label</key> <string>com.apple.taskgated</string> <key>MachServices</key> <dict> <key>com.apple.taskgated</key> <dict> <key>TaskSpec
しかし、ブレークポイントという機能はデバッガの手助けなしでは実現できません。 ブレークポイントとはプログラムの強制一時停止を行うポイントで、実行中のプログラムがブレークポイントに遭遇するとプログラムは一時停止され、デバッガによるプログラムへの介入を行えるようになります。 ブレークポイントは次のような場所に設定できます。 指定した行番号のプログラムを実行しようとする瞬間 関数を呼び出した瞬間 その他、C++などでは「例外が発生した瞬間」などにもブレークポイントを設定することができます。 行番号ブレーク ブレークポイントとしてよく使用されるのは、「プログラムの特定の位置」です。 例として、bubblesort.cプログラムのsort関数内で、隣り合う二つの要素を比較している箇所にブレークポイントを設定してみます。 25|/* bubble sort */ 26|void sort(int *a
Mac OS Xでの標準デバッガはlldbになりましたが、GDBを使いたいこともあるかと思います。 そのような場合、HomebrewやMacPortsでインストールすることができます。が、最近のOS Xではそのまま起動しようとすると以下の様なエラーが出て、実行できない場合があります。 (gdb) run Starting program: /Users/maki/tmp/a.out Unable to find Mach task port for process-id 910: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8)) これはメッセージの通り、gdbコマンドがcodesignされていないのが原因です。GDBにコード署名する必要があります。 コード署名の仕方 証明書の作成 まず、
説明 Union Find は互いに素な集合を扱うための道具である.Union Find を用いると以下の操作を高速に行うことができる. union_set(x,y): x が入っている集合と y が入っている集合を併合する. find_set(x,y): x と y が同じ集合に入っているかを判定する. make_set(x): x のみが入る集合 {x} を作る. アルゴリズムは次の考え方による.集合を多分木で管理し,木の根を集合の代表元とみなす.集合の併合は木の併合,二つの要素が同じ集合に入るかどうかは代表元が等しいかどうかの比較で行う. これらの走査を単純な木で行った場合,検索や併合に最悪 O(n) かかってしまう.そこで平衡操作を取る.具体的には木の要素を手繰ったとき,それらの親ポインタをすべて根に張り替える.このときの計算量を見積もるのは複雑だが,ならし解析によって O(A(n
動的配列クラス std::vector とは std::vector とは C++ で標準に使用できるとっても便利な動的配列クラスでござるぞ。 通常配列と同じように [] 演算子で値を参照・代入することはもちろん、サイズ情報等の取得やデータの挿入削除なども可能だ。 「動的配列」とは配列サイズを自由に増減できるという意味。「可変長配列」と呼ばれることもある。 通常の配列は非常に便利で使用頻度の高いデータ構造だが、サイズを予め指定する必要があり、実行時に動的にサイズを変更することが出来ない。 例えば、「int data[100]; 」と宣言した場合、実行時にデータ数が100を超えるとお手上げだ。 スネークゲームでは、ヘビの胴体の長さがどんどん長くなるので、 胴体座標を動的配列で実装している。 これを普通の配列で実装すると、胴体の最大長を保持する可能性があるので、78*21=1638 のサイズの
標準入力ストリームcinと標準エラーストリームcerrは、それぞれ標準出力ストリームcoutに結び付け(tie)られている。N3337 27.4.2/p2, p5, 27.5.5.3/p1より該当箇所を引用。*1 istream cin; 2 After the object cin is initialized, cin.tie() returns &cout. (snip) ostream cerr; 5 After the object cerr is initialized, cerr.flags() & unitbuf is nonzero and cerr.tie() returns &cout. (snip) basic_ostream<charT,traits>* tie() const; 1 Returns: An output sequence that is tied
大量の入出力データを扱う課題を解く際に,入出力の処理に cin, cout ストリームを使用した C++ プログ ラムは scanf, printf 関数を使用した同等のプログラムに比べてとても遅くなることに注意してほしい.よっ て,cin / cout ストリームを使用しているのであれば,代わりに scanf / printf を使用することを強く薦める. しかし,それでも cin / cout を使いたい場合は,プログラムの冒頭に次の行 ios::sync_with_stdio(false); を加え,その上で endl を決して使用せずに代わりに “\n” を使用することを薦める. ただし,ios::sync_with_stdio(false); を含むと cin / cout と scanf / printf を同時に使えなくなること に注意せよ.つまり,上の行を使用する場合は,c
15. Visual Studio は 着実に C++11/14 に対応 2010. 4 2010 auto, move, nullptr lamdas, <random> 2012. 9 2012 Range-based for, enum class <chrono> , <ratio>. <thread> 2013. 6 2013 Preview Variadic templates initializer_lists, C++14 libs 2013. 9 2013 RC Non-static data member init defaulted / deleted functions 2013. 11 2013 2013 Q4 2013 + CTP constexpr, noexcept C++14 generic lamdas
C由来の物 競技プログラミングでは、速度の関係上、C由来の入出力関数を使い、C++由来の入出力関数を避ける事が推奨されている場合が多いです。(例: JOI) scanf scanfはCではstdio.h、C++ではcstdioヘッダで定義されている関数で、様々な種類の入力をうけて、それに沿った型の変数に受ける事ができます。 第一引数で「フォーマット文字列」と呼ばれる形式に沿って、入力の形式を指定し、第二引数以降の任意個の引数で、入力を受ける先の変数のポインタを指定します。 フォーマット文字列等の詳しい説明はWikipediaで。 主に注意すべきは第二引数以降がポインタである事です。 また、競技とは関係ありませんが、実用プログラミングだと%sで文字列を入力として受ける場合に%10sのように長さを指定しないと、バッファオーバーランと呼ばれるセキュリティホールの元になったりするので注意が必要です
久々にtopcoderをやってみたんですが、1問しか解けませんでした。終わった時は練習しようと思うんですが、中々実行できないです。。 久々すぎて文字列のsplitすら出来なくて、そんな馬鹿なと思って調べてみると、STLのstringってsplitメソッドが無いんですね。仕方ないのでその辺のコードをコピペしたんですが、終わってから皆さんのコードを見るとstringstreamでsplitするのが、常套手段っぽくて、初めて目にしたのでメモ書きです。 #include #include #include #include using namespace std; int main(int argc, char* argv) { stringstream ss("hello std world"); // これでスペースで文字列splitできる string elem; while (ss >>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く