【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/07/18(火) 07:07:27.20ID:vzMDiUgd
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1478440682/
2017/08/16(水) 19:58:01.86ID:SkaUp3/b
>>454
こういうtemplateやtypenameが入り混じったc++のソースってc#好きの俺には耐えられん。ごちゃごちゃしていて見た目が美しく無いよね。
2017/08/16(水) 20:00:25.84ID:SkaUp3/b
ああ、454さんを批判する意図は無いのでお間違いなく。
462デフォルトの名無しさん
垢版 |
2017/08/16(水) 21:21:06.13ID:64ASz8nj
int main() {
std::deque<int> deq(10);
const std::deque<int>::size_type size = deq.size();
for (int i = 0; i < static_cast<int>(size); ++i) { deq[i] = i; }
std::cout << deq.front() << std::endl;
}
配列のサンプルコードで
const std::deque<int>::size_type size = deq.size();
こういう記述を良く見るんですが、
int size = deq.size();
では駄目なケースとかあるんですか?
2017/08/16(水) 22:14:04.28ID:1Ba2PBWP
テンプレートのウザイ仕様です
型に依存したコードにならざるをえないのに、
使えと強要するような型定義
2017/08/16(水) 22:15:53.93ID:1Ba2PBWP
ていうか、キャストしてるから動作は同じだな
2017/08/16(水) 22:45:16.00ID:zl8YLx97
それより
auto size = deq.size();
for (int i = 0; i < size; i++ );
で比較の部分に警告が出るのを何とかして欲しい
2017/08/16(水) 22:48:56.53ID:TFzMtZDz
なぜ、decltype(size)とすら書かないのか…
2017/08/16(水) 22:54:21.64ID:zl8YLx97
for (decltype(size) i {}; i < size; i++);
ごめん、生理的に無理
2017/08/16(水) 22:56:56.26ID:HDO3jlPo
>>467
じゃあ、やめときな
生理的にあわない言語だったんだよ
さようなら
2017/08/17(木) 02:50:59.58ID:POHMQxDJ
どっちもsize_tじゃアカンの?
2017/08/17(木) 03:45:02.07ID:sil69yD8
この手の話をする時間が勿体ない
c++の言語仕様に悩む時間が無駄
俺も頃合みて捨てるわ
2017/08/17(木) 03:47:16.62ID:6E9r52D/
組み込み、OS、ドライバを書く言語ではなくなったな。
2017/08/17(木) 03:49:09.87ID:K5IWxEsn
>>469
あかんよ。
この場合、 deq の型はたぶん deque を想定してるんだと思うけど、
deq.size() の返却値が size_t である保証はないはず。 (他のコンテナでも同様)
この型はあくまでも deque::size_type なので、
まあ一般的には size_t と同じになるだろうけど厳密に言えばそれをあてにするのはよろしくない。
2017/08/17(木) 06:22:12.53ID:zzoRHhsR
sizeとdeq.size()が同じ型である必要はない
sizeがdeq.size()の値を保持出来れば何でもいい
charでもビットフィールドでも
2017/08/17(木) 07:08:05.04ID:6E9r52D/
グダグダ感が半端ないな。そりゃ全てを捨ててJavaやC#を作りたくなるわ。
でもJavaやC#がC++と同じ道を歩んでて笑える。
475462
垢版 |
2017/08/17(木) 08:47:14.10ID:XAlxh4c7
とりあえず万全を期すためにってやつみたいですね。
レスありがとうございました。
2017/08/18(金) 08:12:05.04ID:Df++WDQ/
[var1 var2] = func();
みたいに返り値2つにする方法ってないですか
2017/08/18(金) 08:19:11.14ID:cQGhZEXD
二つを含んだ構造体やクラスを返す
引数にアドレスや参照を渡してそこに書いてもらう
グローバル変数経由で返す
ファイル経由で返す
...
2017/08/18(金) 08:25:33.13ID:jeMQJBsl
>>476
std::tupleでググれ
2017/08/18(金) 08:40:55.93ID:nZKbkzFD
いいかげんCとC++分けようぜ
2017/08/18(金) 09:18:42.99ID:tz1eiY37
>>476
有ります
2017/08/18(金) 09:21:26.56ID:tz1eiY37
きっと昨日Visual C++をバージョンアップして
できるようになったのが嬉しかったに相違ない
2017/08/18(金) 11:50:59.94ID:CFJX4XlT
初心者歓迎スレなんだから、>>480みたいな小学生の悪ふざけみたいなレスはやめよう。
すでに真っ当な回答も出ているのに。
2017/08/18(金) 13:03:51.12ID:Df++WDQ/
>>477-478
ありがとうございます
tuple使おうと思います
2017/08/18(金) 13:07:19.75ID:jeMQJBsl
>>483
ついでにstd::tieもググっとくといいかも
2017/08/18(金) 21:34:14.61ID:dvMMsT1N
初歩的な質問で申し訳ないのですがC言語のおすすめの開発環境はなんでしょうか
調べてみたら結構種類があって自分で選ぶことができないです
2017/08/18(金) 21:39:48.25ID:sjvn+N2b
>>485
リッチな環境が望みなら、
Visual Studio 2017。
貧乏人は
MSYS2とテキストエディタ。
487デフォルトの名無しさん
垢版 |
2017/08/18(金) 21:41:06.02ID:yRxu02Qs
意見が割れそうだけど、迷うくらいなら、winならvisualstudio, macならxcodeでも使ってみては
取り敢えずデバッガが手軽に使えれば何でもいい気はする
2017/08/18(金) 21:41:55.55ID:enWn3c7M
その前にそちらの環境を
2017/08/18(金) 22:18:09.85ID:dvMMsT1N
>>486
>>487
ありがとうございます!
visual studioでやります!
2017/08/18(金) 22:46:00.68ID:FB1E6DTF
学生時代と就職当初はC、現在はJavaとCsharpを主にやっています
最近C++を独学で勉強しようと思って調べはじめたした
印象ですが、これは言語作った人はどうみても天才で変態なんじゃないかと思いました
言語仕様としてはJavaなんかの方が広いかも知れないけど…
奥深さというか、底無し沼な予感というか最強なのでは?との印象を持ちました
2ちゃんねるなんかで見るかぎりあまり人気のある言語では無さそうですが、これはJavaなんかでも同じでWeb屋さんとかが言ってる気がしました

以上が自分の現時点での感触なのですが、大きく外れてはいませんでしょうか?
釣りとかでは一切ないです
2017/08/18(金) 22:56:37.18ID:R7MrN97k
さいきょーだとかの漠然とした印象とか持つんじゃなくて、それぞれの言語の長所短所とか、どういうケースで使われているとか、そういうのをちゃんと調べたら?
2017/08/18(金) 23:03:57.12ID:w2enVJbE
C++は言語ヲタク的には際限なく楽しいけどそれだけ
今直ぐ実現したい何かがある時はpythonかphpで済ませちゃうw
お仕事の人はそんな自由ないだろうからガンダムしかない
2017/08/18(金) 23:52:59.71ID:B0LmSygc
>天才で
ものは言いようだな
複雑な概念を分かりやすく整理できる人間はこんなUNKO言語は作らない
2017/08/19(土) 05:46:25.10ID:65TMOtSV
新機能を使いたがる馬鹿は採用しません。
2017/08/19(土) 11:11:21.66ID:2Vqw9aXW
>>486
意味わからん
Community Editionは無償だぞ
2017/08/19(土) 11:37:47.76ID:fJjUBUKN
C++は天才の言語と言うよりは、無駄に意識高い人の言語。
関係ないけど京都出身のプログラマはC++使ってる奴多い印象。
一見さんお断り的な文化が合ってるんだろう。
2017/08/19(土) 11:48:31.10ID:w9JmRxmV
>>496
C++11later になってからいっそうひどくなりました。テンプレート周りはもうわけわからん、翻訳じゃなくきんとした和書はでないものですかね
2017/08/19(土) 11:54:49.03ID:4VaJZBkL
>>495
きっとライセンスのことなんて考えたことないんだよ
2017/08/19(土) 12:10:40.40ID:zAuNzUDU
>京都出身のプログラマ
ぷぷぷっ
2017/08/19(土) 12:35:47.59ID:cKMZzj+K
まだWindows XPを使っている人が居るかも知れないから。
501デフォルトの名無しさん
垢版 |
2017/08/21(月) 00:35:19.32ID:3vfGh3Or
まぁ、島根だか鳥取だかの出身のプログラマはruby大好きなイメージと同じだよな。
2017/08/21(月) 08:26:40.74ID:zEm/QKUv
ruby はやめて python にするよ‥
2017/08/21(月) 16:02:51.68ID:ZisHBz7l
嫌、そこはALGOLだろう
2017/08/22(火) 09:50:47.77ID:q1PzJh5l
c/c++の簡単版があればいいんだが
rustはあまりにも機能が多い
2017/08/22(火) 10:53:41.18ID:NZxMNqD7
スレチだけどオープンソースのAlgol68ってあるんだな
2017/08/22(火) 11:29:16.92ID:KZ6Dh/Z1
>>504
java「呼んだ?」
2017/08/22(火) 11:29:39.34ID:COEJtZVq
C++はベターCとして使うのが最も生産的だと思いました。
2017/08/22(火) 17:29:10.69ID:NIBb7Mxl
auto使ってる奴見るとイタイ奴だなと思いました。
2017/08/22(火) 21:27:29.17ID:hmTXL6wT
auto に問題があるの?
2017/08/22(火) 22:18:17.39ID:nZXv/xRm
別に痛い奴だと思われるとガソリン代が上がったりするわけじゃないからね
2017/08/22(火) 22:31:49.37ID:gH/fspX5
型名 変数名 = ... だとデコボコするんで、ついつい
auto 変数名 = ... をズラズラっと並べたくなる
でも、書き終わってから読み直すと、あれ?逆に読みにくい?とか
どーでもいいとこで悩んでしまう
2017/08/23(水) 08:09:55.25ID:Rd2CDMDC
C# の var 論争再び w
老害ってほんと進歩しないのな
2017/08/23(水) 08:51:20.73ID:wn9e0tbq
老害って何歳から?
2017/08/23(水) 10:35:28.29ID:Bqf1nBHj
>>512
https://github.com/aspnet/Home/wiki/Engineering-guidelines
515デフォルトの名無しさん
垢版 |
2017/08/23(水) 12:45:56.26ID:svL9mCb4
年齢関係なく、単に馬鹿ほどvar好き。論理的思考ができない。
2017/08/23(水) 18:28:16.03ID:Bqf1nBHj
>>515
https://github.com/aspnet/Home/wiki/Engineering-guidelines
2017/08/23(水) 18:28:57.19ID:5WGHPwEM
>>514
これはガチなの?実はアンチパターンで釣られましたねってことはないだろうな?w

FruitFlavor flavor = fruit.GetFlavor();
var flavor = fruit.GetFlavor();

前者の方が読みやすいような気がしてしまう。
今時ならIDEのアシストあるし関係ないか?って気がしないでもないけど
考えるほど分かんなくなる〜
2017/08/23(水) 18:30:10.67ID:Bqf1nBHj
>>517
MSのOSSリポジトリ覗いてみ
2017/08/23(水) 18:42:34.12ID:svL9mCb4
ID:Bqf1nBHj  な? 馬鹿だろ。
2017/08/23(水) 18:53:12.02ID:Bqf1nBHj
>>519
なにが?
2017/08/23(水) 18:59:53.02ID:HlA0mWJs
C++ 標準委員会のドワンゴ江添は、職務質問の手荷物検査を拒否したら、
警官10人に、現場で1時間半以上、拘束されたらしい

捜査でもない、任意の行政処分なのにw

それで東京都を訴えた
2017/08/23(水) 19:04:14.64ID:svL9mCb4
日頃から発言がおかしい勘違い君だからな。
2017/08/23(水) 19:07:29.72ID:Rd2CDMDC
>>517
そう言う単純な奴ならたいして変わらんので>>515みたいな変化を嫌う老害はvarを使いたがらない
Dictionary<string, Dictionary<string, string>> M = new Dictionary<string, Dictionary<string, string>>();
とか使い始めたら同じの2個もいらんやんってなる
524デフォルトの名無しさん
垢版 |
2017/08/23(水) 19:13:12.59ID:svL9mCb4
ここ数年、どのスレで論破されるとキレて老害連呼しだす人がいたが、
おそらく、ID:Rd2CDMDC は同一人物だろう。
2017/08/23(水) 19:34:08.26ID:/4+aEImc
右辺にクラス名が現れるときだけauto使う派
FruitFlavor flavor = fruit.GetFlavor()
auto unko = (Unko)GetFuck()
2017/08/23(水) 19:36:20.34ID:8VCPyRKy
複雑な型は事前にtypedefして使う派。
2017/08/23(水) 19:36:35.05ID:GX5TSqZj
ラムダ式のときもauto使うしなー
2017/08/23(水) 19:40:35.97ID:GX5TSqZj
>>526
C++11以降ならtypedefよりusingがよいぞい
https://msdn.microsoft.com/ja-jp/library/dn467695.aspx
2017/08/23(水) 19:57:11.83ID:VR+2stBC
老害は過去のレスには詳しいw
530デフォルトの名無しさん
垢版 |
2017/08/23(水) 20:13:58.21ID:elGjkRqx
restrictなんかもそのうちdstのsrc言及有無、srcのdst参照有無を縛る修飾に成るんだろうな
2017/08/24(木) 05:55:50.39ID:5zDLSTW7
>>525
同意

関数が何を返すか分かるから右辺が関数の場合でも構わないけど
関数の戻り値にauto使う奴らは殲滅したい
532デフォルトの名無しさん
垢版 |
2017/08/24(木) 09:53:17.83ID:FefNdqnS
タイプが面倒というPGはコメントも書かないし、単体テストも端折るし、
他の人が書いたソースにバグがあるかどうか真剣に読まない。バグ製造機。
プロジェクトにこういう人が一人でもいると、全体の品質が下がるばかりか
全体の士気まで下がるから厄介。態度の悪さを指摘すると老害連呼のウイルスプログラマ。
2017/08/24(木) 18:33:33.36ID:dK94ZXMf
>>532
他人のコードのバグを見つけるとか極悪じゃないか?
2017/08/24(木) 19:29:06.97ID:++6qy4SY
>>533
えっっ?
最近はコードの机上検証はしないって?
2017/08/25(金) 14:56:45.51ID:nyf+izFi
>>531
ちょっと聞きたいんだけど、
std::vectorをprivateメンバに持つクラスに、vectorのサイズを返すメンバ関数を作る場合、
返値の型はstd::vector::size_typeにするの?
それとも適当にsize_tとかで返しちゃう?

前者だとprivateメンバの型が外側に漏れてる感じが気持ち悪くて嫌だし、
後者は型が違うのが嫌だから、
autoで返しちゃいたいんたけど、殲滅されるべきなのかな
2017/08/25(金) 15:13:47.84ID:g+9HiqWa
>>535
typedefかusingを使う
2017/08/25(金) 17:04:11.95ID:mWX/padL
intでいいよ
2017/08/25(金) 17:08:02.77ID:mWX/padL
メンバ関数ごとに型が違うなんて使いづらすぎる
2017/08/25(金) 17:28:28.06ID:te52+8O3
intは流石にだめだろ
2017/08/25(金) 17:47:23.39ID:mWX/padL
intでサイズ的に十分ならint
2017/08/25(金) 17:48:31.18ID:mWX/padL
>>539
なぜ?
2017/08/25(金) 18:03:18.25ID:M7y+0IYN
>>541
sizeof(int) == 4 && sizeof(size_t) == 8という環境がある。
intは符号あり、size_tは符号なし。
543デフォルトの名無しさん
垢版 |
2017/08/25(金) 18:06:14.26ID:KodDhcxm
size_tを符号なしにした馬鹿は誰だよ。
2017/08/25(金) 18:15:01.16ID:mWX/padL
>>542
だから、
intで収まるならintで
2017/08/25(金) 18:19:04.85ID:te52+8O3
>>544
もとからintならあれだが、いちいち別の型であるintにキャストする積極的な理由はなんだ?
2017/08/25(金) 18:20:08.57ID:mWX/padL
intをオーバーする心配をするなら
size_tをオーバーする心配も
メモリが足りない心配も
処理が遅すぎて使い物にならない心配も
2017/08/25(金) 18:20:36.17ID:te52+8O3
>>546
そうじゃなくてわざわざ型変換する理由は何?
2017/08/25(金) 18:21:19.25ID:mWX/padL
統一
2017/08/25(金) 18:25:11.29ID:mWX/padL
>>542の環境の場合、多くの場合ムダにデカい変数を扱うことになる

もちろん、巨大なデータを扱う可能性があるならムダではない
と同時に、>>546も心配する必要がある
2017/08/25(金) 18:26:03.20ID:te52+8O3
>>548
何と何を統一するの?

int n = static_cast<int>(v.size());
という面倒な表記?それとも
int n = v.size();
とかいう-Wall で死ぬ表記?

auto n = v.size();
って書かずにキャストをどうしてもしたいのはなぜなのか
2017/08/25(金) 18:30:18.05ID:mWX/padL
クラスを使う人が、内部的にvectorを意識する必要もないし、それようにわざわざ専用の型を使う必要もない

intは他の処理でも多く使われているので、使う側からすれば一番変換が少ない

巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど
2017/08/25(金) 18:35:08.21ID:mWX/padL
>>550
そういう面倒なことをクラスのユーザーにさせないため
2017/08/25(金) 18:48:22.24ID:s9vD7wq8
ID:mWX/padLみたいな前近代的なマが早くくたばりますように
2017/08/25(金) 19:08:25.29ID:te52+8O3
>巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど

STLのsizeはsize_tで統一されてんのにお前が乱してるんだろw
2017/08/25(金) 19:21:24.07ID:g+9HiqWa
>そういう面倒なことをクラスのユーザーにさせないため

どんな理屈だよ
vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
ユーザは負数に成り得る変数を注意しながら使えってか
何のための型だよ
2017/08/25(金) 19:27:33.63ID:wHQvIY8a
>vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
あたりめーだ
真人間ならラップは手段であって目的じゃねーから
>ユーザは負数に成り得る変数を注意しながら使えってか
バカ乙
計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ
2017/08/25(金) 19:38:23.61ID:mWX/padL
>>554
STLを意識させないためにクラスで包んでるんだろうに
意識させるならパッケージング失敗では?
2017/08/25(金) 19:38:41.32ID:g+9HiqWa
>>556
>あたりめーだ
>真人間ならラップは手段であって目的じゃねーから
ごめん、意味分からん

>計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ
だから、わざわざvector::size_typeなものをintに変換する必要がないじゃないの
0からmax_size()までの範囲なんだからさ
2017/08/25(金) 19:40:58.71ID:g+9HiqWa
>>557
だからtypedefやusingを使うって話だよ
2017/08/25(金) 19:41:24.55ID:mWX/padL
vectorから他の実装に変えたらクラスの仕様も変えるのか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況