C++ in Xcode Tired of Vim? Here's tips for C++ development in Xcode. Tuned to the needs of many classes at UM. Contents: Creating the Project Command Line Arguments Input Redirection - stdin Input and Output files - fstream Debugging Source Control Testing on CAEN Creating the Project After opening Xcode, go to File->New->Project In the OS X section, select 'Application' and then select the 'Comma
C++11で新しく加わったchronoライブラリを使うと、簡単に経過時間が計測できる。もう環境依存のコードを書かなくてよくなるなら嬉しい。 サンプルコードは以下。シンプルなのですぐわかると思う。 #include <iostream> #include <chrono> int main() { auto start = std::chrono::system_clock::now(); // 重い処理 long long j = 0; for(int i = 1; i <= 100000000; ++i) { j += i; } auto end = std::chrono::system_clock::now(); // 経過時間をミリ秒単位で表示 auto diff = end - start; std::cout << "elapsed time = " << std::chron
最近、Mac OS X(Marvericks)のターミナル上で、C言語を使って開発しています。その場合、Xcodeを使ってやるのが環境構築するのが一番簡単です。 ただターミナル上、あるいは、EclipseやNetBeansでやる場合には、コマンドを入力する必要があります。 このとき、gccは普通に使えるのですが、gdbがありません。その代わり、デバッグには、lldbを使います。lldbの使い方は、以下より。 LLDB Tutorial http://lldb.llvm.org/tutorial.html 簡単にまとめると、以下の通り。 まず、コンパイル時に、デバッグオプション(-g)を追加。 gcc -Wall -O2 -g -c hoge.c 起動時に実行ファイルを指定してlldbを実行。 lldb ./appfile 実行するには「r」(または「run」)をタイプします。これだけで、落
C++11 固定長配列クラス std::array とは std::array は C++11 で追加された固定長配列のコンテナクラスだ。 通常配列では、std::vector の size() や back() などの便利な機能が使えない。 それらを使いたいけど、サイズは固定でいいので vector を使うほどでもない。ってときは std::array の出番だ。 データ構造 array は vector や list のようなデータ構造を持たず、通常配列と同じように要素のためにだけメモリを消費する。 その分、vector に比べるとメモリ効率がいいのだが、要素数が多い場合はその効果は無視できるほどだ。 array の交換においては、中身のデータを交換するしかなく O(N) の処理時間を要する。 vector 等であればデータ領域へのポインタを交換するだけなので O(1) の処理時間で済
A Guide to Porting C/C++ to Rust This book is for people familiar with C or C++ who are thinking of using Rust. Before we go into what Rust is or why it might be preferable to C/C++ in some cases, let's think of software that is mission critical and must not or should not fail. Operating system services and daemons Internet of things devices Industrial control software Medical devices - MRI, ultra
タイトルのとおりです。 基本的な使用方法 まず基本的な使い方。 #include "stdafx.h" #include <memory> #include <iostream> class Hoge { public: Hoge(){} ~Hoge(){ std::cout << "Hogeのデストラクタだよ" << std::endl; } int number_; }; int _tmain(int argc, _TCHAR* argv[]) { { std::shared_ptr<Hoge> hoge1(new Hoge); // 初期化 hoge1->number_ = 30; { std::shared_ptr<Hoge> hoge2 = hoge1; std::cout << "hoge1->number_ : " << hoge1->number_ << std::endl
C++のstd::swapを使うと std::swap(a, b) のようにして、変数aとbの値を入れ替えることが出来る。 これは配列に対しても適用出来る。例えば、以下のようにして配列a[]と配列b[]をスワップ出来る。 #include <iostream> using namespace std; void dump(int arr[], int sz) { for (int i = 0; i < sz; i++) cout << arr[i] << " "; cout << endl; } int main(int argc, char **argv) { int a[] = {1,2,3}; int b[] = {4,5,6}; swap(a, b); dump(a, 3); // 4 5 6 dump(b, 3); // 1 2 3 return 0; } また、行列(二次元配列
http://www.Cppcon.org — Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/cppcon/cppcon2015 — Lightning Talk — Videos Filmed & Edited by Bash Films: http://www.BashFilms.com *-----* Register Now For CppCon 2022: https://cppcon.org/registration/ *-----*
概要 生配列を使う人がstd::arrayを使うきっかけになれば良いなと思います。 パフォーマンス 最適化をかければstd::arrayは生配列と全く同じアセンブリを吐き出す事が知られています。 つまり、パフォーマンスに差はありません。 アルゴリズム アルゴリズムに関しては生配列にも適応できるので問題無いでしょう。 std::array<int, 10> a; std::fill(a.begin(), a.end(), 10); int b[10]; std::fill(std::begin(b), std::end(b), 10); forのイテレーション イテレーションに関してはどれも割と難有りですね。 range based forが圧倒的にシンプルです。 生配列のサイズを取得するのにtemplate関数を作らなければいけないのが面倒です。 マクロは個人的にはやめた方が良いと思います
なんか超テキトーに書いて投稿した初稿がそこそこStockされてて、もっとちゃんと書けやゴルァって怒られそうな気がするので更新します。 オヒサシブリデス。 最近C++の最新情報を集めるのもサボってまして、本の虫で最新の論文を紹介している記事も流し読み状態。これではいけない。今や2016年、順当に行けばC++1zがC++17になる日も近いではないか。 というわけで、まずはStandard C++の公式サイトを見てみる。conceptはよ。networkingはよ。 Current Status - Stancard C++ Recent milestones: C++17 nearly feature-complete, second round of TSes now under development ふむふむ。そろそろFCで、TSが現在策定中であると。なるほどなるほど。で、何が標準入りす
(注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p
published at 30.06.2016 14:32 by Jens Weller Save to Instapaper Pocket With last weeks C++ committee meeting in Oulu, C++17 is feature complete and on its way to become an international standard. After the last meeting in Jacksonville I had little hope to see big surprises, but Oulu managed to add a few important and interesting features to the new standard. There is a very good overview on Reddit
Programming Place Plus へようこそ。 当サイトはプログラミングに関する学習サイトで、現在はC言語と C++ を扱っています。 プログラミングの入門~中級(自分でプログラミングできるレベル)までをサポートすることを目指して、コンテンツを作成、更新しています。 最近行われた更新を、ここから確認できます。 お知らせ 🔗 ’2025/10/5 参考書籍の更新を2回スキップしてしまったので、2回分まとめて更新しました。今後、参考書籍の更新は不定期になります ’2025/1/22 「今後の予定」を更新しました ’2024/12/28 オフライン版を更新しました コンテンツ 🔗 Programming Place Plus のコンテンツです。最近行われた更新はこちら。 以下の検索窓から、すべてのコンテンツを検索できます。
C++11 の新しい機能に「右辺値参照」と「ムーブセマンティクス」があります。 ググればこれらに関して解説されてるサイトが結構ありますが、一般的には理解しづらいものとして扱われてるみたいです。 かくいう自分もよくわかりませんでした……。 ですので、今回は至ってシンプルな配列クラスを使って、これらが何を意味するのかを知ろうかと思います。 従来は「コピー」 まずは、「右辺値参照」と「ムーブセマンティクス」を使わないコードを見てみます。 # include <iostream> using namespace std; struct Array { typedef int ValueType; ValueType *p; int length; // コンストラクタ Array(int _length) : p(new ValueType[_length]) , length(_length)
C++0xのアレです。 これに関してはさんざん解説がされているとは思いますが、自分がイマイチ理解していなかったのでまとめてみました。 概念や細かい仕様なんかは書いてないのでありからず…。 あとテスト用のコンパイラは、gcc-4.5.0 です。 ☆参照渡し C++ では、型名に & を付けることでオブジェクトのアドレスを受け取り、値の参照を行うことが出来ます。 int n = 10; int& ref = n; // int* ref = &n; を行っているイメージ ref = 3; // ref は n を指しているので、代入すれば n も変わる ここで重要なのは、参照渡しは値のコピーを行わない事です。 まぁこれに関しては、ポインタ渡しと同じですね。 関数の引数を参照で受け取るのは、無駄なコピーを行わない為です。 void hoge(std::string& str){} std::st
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く