読者です 読者をやめる 読者になる 読者になる

orychaのブログ

音楽とかPCまわりのことを中心に

出力の参照渡しとポインタ渡しの比較

C++

概要

関数の引数はGoogle C++ Style Guideに従って以下の形式にすると良い.

void myclass::hoge(const myclass& a,
          int val,
          int* answer1,
          int* answer2);
  • 入力については,ポインタ or const参照
  • 出力は必ずポインタで渡す
    • 出力先としてnullptrを指定して,要らない出力は受け取らないみたいなことが出来る.

はじめに

最近C++を始め,Effective C++C++のためのAPIデザインなどを読みながら勉強しています.

コーディング規約としてはGoogle C++ Style Guideを参考にしているのですが,参照引数について規約の理由を検討しました.

結果,エラー処理の考え方によってはリーズナブルだと分かりました. (なお,例外は使わない方針です -> Google C++ Style Guide)

参照引数に関する規約の概要

参照引数の箇所によると以下の方針.

  • const参照は効率的だから使う.
  • 入力引数のポインタ渡しは,nullptrを渡したい場合に使う.
  • 非const参照は,通常の引数と違って値が書き変わるのが分かりにくいため使わない.
    • 出力引数として参照を使用してはいけない.ポインタを使う.

出力の参照渡しの利点

入力をconst参照で渡すのは効率的でよい.これはEffective C++にも書いてあります. ただ,出力をポインタで渡すと,nullptrチェックが必要になります.

例えば,以下のような関数を考えます.

void getValuesByPointer(int* x, int* y)
{
    if (x != nullptr){
        *x = 1;
    }

    if (y != nullptr){
        *y = 2;
    }
    return;
}

参照ではnullptrになりえないので,チェックは不要です.もっと簡潔に書けます.

void getValuesByRef(int& x, int& y)
{
    x = 1;
    y = 2;
    return;
}

出力のポインタ渡しの利点

出力をポインタで渡すと,明示的に受け取らないということが可能になります. 上の例でxだけ取得したい場合,参照を使ったコードでは以下のようになります.yは宣言しているのに使いません.

int main()
{
    int x;
    int y; // 不要だけど宣言しないとダメ
    getValuesByRef(x, y);
    cout << x << endl;
    return 0;
}

一方ポインタでは以下のように書けます.

int main()
{
    int x;
    getValuesByPointer(&x, nullptr);
    cout << x << endl;
    return 0;
}

これはちょうどPython_みたいな感じです.参照と比べて非常に便利. また,intではなくて非常に大きなオブジェクトの場合は,メモリサイズ削減にも寄与します.

まとめ

出力はポインタで渡す設計にしよう.

2016年 個人的ベストアルバム

音楽

沢山あります。

続きを読む

2016年よく聞いた曲

音楽

曲単位。アルバムは積んでるやつを聞き終えたら書きます。

でんぱ組.inc「STAR☆ットしちゃうぜ春だしね」


大森靖子「愛してる.com」


LILI LIMIT「N_tower」


スカート「CALL」


岡崎体育 「鴨川等間隔」


フレンズ「夜にダンス」


ラブリーサマーちゃん「PART-TIME ROBOT」


くるり琥珀色の街、上海蟹の朝」


group_inou「cider cider」(ミツメ カバー)


大森靖子「オリオン座」

sublime text 3 でLaTeXToolsの設定

LaTeX

ブログのアクセス解析見たらLaTeXの記事へのアクセスがそこそこあったので,今回は自分のSublime Text 3 + LaTeX環境を説明します. Windows8.1です.

Sublime Text 3

普通にインストールして,Package Control,IME Support,ConvertToUTF8,LaTeXToolsを入れます.

ConvertToUTF8入れてますが,LaTeXの文章自体はUTF-8で書いてます.

latexmk設定ファイル

latexmkはlatexのビルドを簡単にしてくれるツールです.TeX Live,W32TeXともにデフォルトで入ってます.(w32texではperl処理系の導入が必要.)

設定は実行時引数で渡す方法と,設定ファイルをホームディレクトリに置く方法があるのですが,自分は後者を使っています. windowsなのでC:\Users\ユーザー名\.latexmkrcファイルを作成し,以下を記述しています.

latexmk設定ファイル

インターネットから拾ってきたやつです.フォント埋め込みはオフにしています.埋め込みたければnoembed.mapをipaex.mapにすれば良い. .で始まるファイルはコマンドプロンプトecho > .latexmkrcとかやれば作れます.

LaTeXToolsのためのbuild system追加

Sublime TextでTeX書いてる人は絶対入れてると思うんですけど,去年位にあったアップデートのせいで昔の方法だと日本語環境ではうまくいきません. (ちょうど原稿書いてるときにアップデート来てひどい目にあった思い出があります.)

TeX Wikiではソースをいじる対応方法を紹介してますが,自分はbuild systemを別に設定して対応しています.

sublimeの設定バーでTools -> Build System -> New Build System と選択して,以下のファイルを作成.

latexmkをsublime text3で使う設定

myLatexbuildとか名前を付けて保存. これで,LaTeXをbuildするときにはlatexmkが走りプレビュー表示までしてくれます.build部分はLaTeXToolsに依存してないので,LaTeXToolsになんかしらのアップデートがあってもとりあえずbuildは動きます.

2015年 ベストアルバム

音楽

アルバム編。
いいアルバムはたくさんあったんだけど、1位をつけるとなると思い浮かばなくて、今回は順不同で10枚です。

ラブリーサマーちゃん-#ラブリーミュージック


ラブリーサマーちゃん「私の好きなもの」Music Video

私の好きなもの、は楽しくなれるいい曲。

Helsinki Lambda Club-olutta


Helsinki Lambda Club - Lost in the Supermarket (MV)


Helsinki Lambda Club - シンセミア(LIVE at 下北沢DaisyBar 2015/1/31)

Viva la Rockで見てハマった

HASAMI group-Heart Wire Tapping


HASAMI group - いかれたBaby (フィッシュマンズcover)


HASAMI group - LADY

FINLANDS-JET


FINLANDS「クレーター」Music Video

でんぱ組.inc-WWDD


でんぱ組.inc「サクラあっぱれーしょん」MV


でんぱ組.inc「バリ3共和国」Music Video Full

中間で明らかに流れが切れる部分があるんだけど、A面からB面に代わるレコードを意識してるらしい。サクラあっぱれーしょんで終わるところも最高。

フジファブリック-BOYS


フジファブリック 『夢みるルーザー』(Short Version)

シャルロ-simultaneity

SAKANAMON-あくたもくた


SAKANAMON / 「TSUMANNE~妄想バージョン~」


SAKANAMON - ぱらぱらり 【YouTube限定MUSIC VIDEO】

植田真梨恵-はなしはそれからだ


植田真梨恵「彼に守ってほしい10のこと」PV

LILI LIMIT-Etudes


LILI LIMIT「at good mountain」


LILI LIMIT 1st mini album "Etudes" Digest

LILI LIMITは要注目だと思う。

2015年 ベストトラック

音楽

2015年の個人的ベストトラックです。話のタネにしたい。

2015年発表でなく、自分が2015年に聞いたものの中から10曲選びました。

1. CLUB CULTURE KILL KILL - HASAMI group


HASAMI group CLUB CULTURE KILL KILL

ほぼすべての楽曲をダウンロードでリリースしてて、この曲はここからダウンロードできます -> CLUB CULTURE KILL KILL

途中のセリフは置いといて欲しい。最近はDJやってないはず! HASAMI groupは最近知ったんだけどどのアルバムも楽しい。他の曲だとWaiting More、病気が治ったらとかが好き。

2. EYE - group_inou


group_inou / EYE

曲が最高なのに加えて、MVも面白い。このMVを作るときに使ったソースコードgithubで公開されているのも珍しいなと。

3. きみがその気なら - チャットモンチー


チャットモンチー 『きみがその気なら』(Full Ver.) 4人体制でどうなるかと思ったけど、アルバム一曲目がこれでよかった。

4. BOY - DAOKO


【MV】BOY - daoko (youtube mix)

5. ムなさわぎのヒみつ?! - ポケムヒもったでんぱ組.incと、ハローキティ


ポケムヒもったでんぱ組.incと、ハローキティ『ムなさわぎのヒみつ⁈』

6. 新宿 - 大森靖子


大森靖子「新宿」@中野サンプラザ 10/7 Blu-ray&DVD発売

バンド版。ギターソロがかっこいい。このバンド形態でのライブは今後もあるみたい。

7. 自分らしく - 神聖かまってちゃん


神聖かまってちゃん「自分らしく」

8. フォーエバーヤング - Have a Nice Day!

9. ロマンスがありあまる - ゲスの極み乙女。


ゲスの極み乙女。 - ロマンスがありあまる

10. 長く短い祭 - 椎名林檎

椎名林檎 - 長く短い祭

次はアルバム編。

自前child_pages

phpです.Wordpressで固定ページに,その子ページのコンテンツをすべて表示させたかったので 
https://ja.forums.wordpress.org/topic/1269
を参考にshortcodeを書いてみました.ほとんど一緒ですが,function.phpに移すために少しいじってます.php触ったの2回目なので間違いあったら教えていただきたいです!

機能としては,固定ページで[my_child_pages]とやると子ページを全て表示するってだけです.
複数カラムとか,難しいことはできない.