C++相談室 part166 (607レス)
上下前次1-新
1: sage (ワッチョイ 8732-NXaD) 04/26(土)10:34 ID:pbPDl6lv0(1/2) AAS
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part165
2chスレ:tech VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2: (ワッチョイ 1132-NXaD) 04/26(土)10:36 ID:pbPDl6lv0(2/2) AAS
仲良く使ってね
3: (ワッチョイ b501-4ocp) 04/26(土)11:57 ID:9PQ55tI10(1) AAS
STLでサイズがウンタラカンタラってなくなったんだね
4: (ワッチョイ 797c-VXNn) 04/26(土)13:02 ID:90F8pztq0(1) AAS
あれはキチガイが勝手に貼り続けてただけでテンプレでもなんでもない
5(2): (ワッチョイ bfda-OmX0) 04/29(火)19:50 ID:oiFKb7iS0(1) AAS
プログラムの書き方について学ぶためのサンプルコードですが、
CならLinuxGNUやBSDなど山ほどあるけど、C++の場合は定番としてどんなものがありますか?
6: (ワッチョイ 9ff0-8SS3) 04/29(火)20:44 ID:snW2quW50(1) AAS
C++標準ライブラリ チュートリアル&リファレンス
っていう分厚い本読んどけば大体理解る
7: (ワッチョイ b77c-0tm6) 04/29(火)21:19 ID:d6I4gAkZ0(1) AAS
C++のOSSねえ
有名でコードの質がいい奴だとLLVMか?Clangも読めばコンパイラだから言語の勉強にはなるはず
規範的って意味だとBoostだけど、いきなり勧めるには技巧的で上級者向けすぎやな面白いけどね
あと有名所ならOpenCVだけどあれは汚いから真似してほしくない
8: (ワッチョイ d7d7-7NrX) 04/29(火)23:01 ID:LJmfvcqY0(1) AAS
Open CASCADE も汚いのでお勧めしないなぁ
9: (ワッチョイ b720-xasm) 04/29(火)23:56 ID:qhqmYF5L0(1) AAS
ライブラリだと各OSに対応するためのコードだったり、ヘッダーオンリーにするためのテクニックだったりで、純粋なC++プログラムの勉強として見るとノイズが多いかもしれない
実は初心者向きの良い教材ってあんまり無いかも?
中級者以上ならBoostなどは勉強になるけど、簡単ではないし
10: (ワッチョイ 9f07-VpId) 04/30(水)00:21 ID:en7310Kb0(1) AAS
いろいろとフリーダムすぎてなあ そこがいいんだが
たとえば、ゲーム作りたかったら既存のゲームエンジン、とか、
やりたいカテゴリか近いところの、長続きしてるところの読んでみるといいかも
答えになってないが、(自分用であれ仕事であれ)使わされるのが一番早い
11: (ワッチョイ bf79-FBhq) 04/30(水)00:58 ID:TMleEpRy0(1) AAS
Windowsの電卓は平易で初心者向きかも
Google系も平易な印象だけど、Googleは独自ユーティリティを多用しがちなのが難点
12: はちみつ餃子◆8X2XSCHEME (ワッチョイ b732-Dk0z) 04/30(水)09:16 ID:THYm3xdc0(1) AAS
C++ は言語として特定のスタイルを強制しないという方針を持っているからプロジェクトによって構成の仕方は全く違う。
適当な数個のプロジェクトを見ても数個のスタイルがわかるというだけでしょ。
どれが良いかとか言ってないでたくさん見るしか仕方ないんじゃないかな。
入門書とかいくつかの設計指南系の本くらいは読んでる?
理念抜きで結果として出来上がってるコードを見てもわけがわからんと思う。
本はたくさん読んだほうが良い。
それと C++ は今は三年ごとに規格の改定がある。
どの版を想定するかでもかなり違う。
特に大きなターニングポイントになってるのは C++11 と C++20 だと思う。
最新の GCC で特に指定しなければ C++17 として解釈されるのでこのあたりが現在の普通という感じなはず。
13: (アウアウウー Sa1b-Dl8r) 04/30(水)09:52 ID:uCqRd3Swa(1) AAS
>>5
wxWidgets
14: (ワッチョイ b720-xasm) 04/30(水)12:58 ID:8LRHZRl/0(1) AAS
Windows … というか Visual Studio だと今でもデフォルトは C++14 なんだよな
機能的には C++23 まで使えるのに
15(1): (ワッチョイ afaa-hOut) 05/04(日)16:06 ID:/Tm3kYwr0(1) AAS
初心者スレないんですまん。
C++でvectorとsetで同じことやらすのってどうやるの?
cout << vec << endl;
cout << st << endl;
を共通で書きたいんだけど、
template?の書き方がわかんないの
16(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/04(日)18:28 ID:w7r9Yiaa0(1) AAS
>>15
きちんと諸々に配慮しようとすると面倒なんだけど本当にそれが出来ればよいだけならこんな感じで出来なくはない。
外部リンク:wandbox.org
17(1): 15 (ワッチョイ afaa-hOut) 05/05(月)16:19 ID:WDPor1X60(1) AAS
>>16
ありがとうございます。
std::endlの代わりに' '(空白)を使うことはできませんかね
図々しくごめんなさい
18(3): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/05(月)17:57 ID:7tS1Ts+e0(1) AAS
>>17
まさに「諸々に配慮」と述べた部分がそれでね……。
ここで定義した operator<< と元からある operator<< の両方が char を受け取ることが可能なので
どちらを呼び出すべきか曖昧なオーバーロード (ambiguous overload) になってしまっている。
ちゃんとやる場合はここで定義する operator<< が受け取れるのはコンテナに限定しなければならない。
型に制約を付ける真っ当な方法が入ったのは C++20 からなのでそれ以前の C++ でやろうとすると回りくどいんだよ。
C++11 でなるべく簡素に書くとしたらこんな感じかな。
外部リンク:wandbox.org
19: (ワッチョイ a701-uYIY) 05/06(火)12:29 ID:tCHDdC6b0(1/3) AAS
>template <class T>
>auto operator<<(std::ostream& os, const T& container_object)
> -> typename std::enable_if<!!sizeof(begin(std::declval<T>()) != end(std::declval<T>())), std::ostream&>::type {
横から何じゃこりゃw
20(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/06(火)12:35 ID:SvTeM3j90(1/6) AAS
declval は要らんな。
もっとキッチリしたほうがいいのか簡素にしようか迷ってちょっと変な感じになってる……。
21(1): (ワッチョイ a701-uYIY) 05/06(火)13:03 ID:tCHDdC6b0(2/3) AAS
>>20
いやいや非難ではなく
俺が知っているC++じゃないw
- operatorの前のautoは何ぞ?
- !!演算子?
22(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)13:42 ID:SvTeM3j90(2/6) AAS
>>21
関数名の前に auto を書くと仮引数の後ろに返却値の型を書けるようになる。
つまり -> から { までのところに書いてるのが返却値の型。
従来の書き方では関数の仮引数を返却値の型を決定する文脈では使えないというルールがある。
たとえば
template<class T> decltype(e) foo(const T& e) {return e;}
というようなことは出来ない。 ここで e を参照することは出来ない。
後置では返却値の型を書くところで仮引数を使ってかまわない。
template<class T> auto bar(const T& e) -> decltype(e) {return e;}
ってのはアリ。
省4
23(1): (ワッチョイ a701-uYIY) 05/06(火)14:29 ID:tCHDdC6b0(3/3) AAS
>>22
解説を有難うございます
返り値を後置する記法のアドバンテージが分かりました
>>18は返り値を後置にしてるけどもこれは必須ではないということね
!!も分かりました(g++-12はなしで通ります)
24(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)16:07 ID:SvTeM3j90(3/6) AAS
>>23
> !!も分かりました(g++-12はなしで通ります)
非型テンプレートパラメータで size_t (sizeof の結果) から bool への変換 (縮小変換) は認められていないはず……
……と思ったらこれには例外があってコンパイル時計算の文脈で実際には情報が欠落しないなら OK。
つまり整数の 0 か 1 のときに限り (型の大きさとしては小さくなる変換であっても) bool に変換が可能。
25(1): (ワッチョイ 1279-k14q) 05/06(火)17:28 ID:GbYxwNEQ0(1) AAS
非0ならtrueやないんか
26: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)18:05 ID:SvTeM3j90(4/6) AAS
>>25
せやで。 こういうときは変換されない。
template<bool num>
class foo {};
int main(void) {
foo<2> bar;
}
通常の暗黙の変換で許されていても非型テンプレートパラメタでは縮小変換はされないので↓みたいなのも駄目。
template<unsigned char num>
class foo {};
省3
27(1): 15 (ワッチョイ afaa-hOut) 05/06(火)18:35 ID:jhNAw2EC0(1/2) AAS
>>18
重ね重ねありがとうございます。
なんとか理解してみます。
C++20だとどうなります?
一応、C++の新機能ってぺージ見たんですけど、よくんからなくて
28: (アウアウウー Sac3-7Zak) 05/06(火)18:36 ID:nZOyiL0Ra(1) AAS
enable_ifは便利だけど使ったら負け感が半端無い
29(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)19:26 ID:SvTeM3j90(5/6) AAS
この場合は enable_if は本来の意味で使ってないしな。
上下前次1-新書関写板覧索設栞歴
あと 578 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.009s