C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part143
https://mevius.5ch.net/test/read.cgi/tech/1560574313/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
探検
C++相談室 part144
■ このスレッドは過去ログ倉庫に格納されています
2019/07/22(月) 13:18:35.52ID:gptRHpgT
109デフォルトの名無しさん
2019/07/28(日) 13:18:40.37ID:c9+bQbdr 1の補数や符号ビットだと0のエイリアス(+0と-0)が出来てハッシュの要件満たさなくてめんどくせえし、
もう2の補数ばっかりなんだから2の補数に限定しようぜーってなってC++20から整数型は2の補数限定になる
例によってIBMはキレてる
もう2の補数ばっかりなんだから2の補数に限定しようぜーってなってC++20から整数型は2の補数限定になる
例によってIBMはキレてる
110デフォルトの名無しさん
2019/07/28(日) 13:25:39.79ID:N2Io9ZPD あと宇宙船演算子の戻り値型が符号付整数だけstrong_orderingじゃなくなったりとよろしくない
111デフォルトの名無しさん
2019/07/28(日) 14:06:25.65ID:5UHV96py 1BM = 1の補数表現のBinaryを使うMaker
112デフォルトの名無しさん
2019/07/28(日) 23:13:55.96ID:U1WujzOS 今のIBMはC++にどれくらい貢献してるんです?
113デフォルトの名無しさん
2019/07/30(火) 03:50:43.53ID:yEpi9Vih BOOST_FOREACH と c++11の範囲ベースfor文ってどっちが早いんですか?
114デフォルトの名無しさん
2019/07/30(火) 07:26:38.31ID:FJcM1oBD 同じ
115デフォルトの名無しさん
2019/07/30(火) 07:30:33.15ID:9ymDyD6T >>113 効率は実測が基本。
116デフォルトの名無しさん
2019/07/30(火) 08:06:04.93ID:4WmgeffG >>113
速いでなく早いならboostじゃないかな
速いでなく早いならboostじゃないかな
117デフォルトの名無しさん
2019/07/30(火) 08:36:20.97ID:mDNZ+mDk ほえー宇宙船演算子なんてできるのか…
勉強になったわ
しかしおふざけネーミングなの珍しいな。総合比較演算子とかならなかったのか
勉強になったわ
しかしおふざけネーミングなの珍しいな。総合比較演算子とかならなかったのか
118デフォルトの名無しさん
2019/07/30(火) 09:50:00.73ID:cezd+02w エルヴィス演算子とか
119デフォルトの名無しさん
2019/07/30(火) 10:41:06.47ID:AXUtE9A1 正式名称は三方比較演算子(three-way comparison operator)
120デフォルトの名無しさん
2019/07/30(火) 12:14:04.15ID:reNIrpCV エルビス演算子の名前ってまじでプレスリーなんかよw
121デフォルトの名無しさん
2019/07/30(火) 14:58:53.30ID:q4AvHDZp 宇宙船演算子なんてなんかのタイポだろうと思って読み飛ばしていたけどマジな用語だったのか、勉強になったわ…
FORTRANの算術IF文みたいに宇宙船if文とか作ってくれればいいのに
space_ship_if(x)
equal { … }
plus { … }
minus { … }
FORTRANの算術IF文みたいに宇宙船if文とか作ってくれればいいのに
space_ship_if(x)
equal { … }
plus { … }
minus { … }
122デフォルトの名無しさん
2019/07/30(火) 17:37:24.04ID:cezd+02w ネコ演算子 ^..^
かわいい
かわいい
123デフォルトの名無しさん
2019/07/30(火) 17:41:57.53ID:hcEFIsmn xは何と比較してるん?
switch見たいな構文やな。
switch見たいな構文やな。
124デフォルトの名無しさん
2019/07/30(火) 19:15:29.41ID:YQWzaJvj Opencvで空の画像に点を1000個程度書きたいです
X座標Y座標が既知の場合に最速で点を1000個描画するにはどうしたらいいんですかね?
X座標Y座標が既知の場合に最速で点を1000個描画するにはどうしたらいいんですかね?
125デフォルトの名無しさん
2019/07/30(火) 20:14:10.30ID:q4AvHDZp126デフォルトの名無しさん
2019/07/31(水) 14:05:31.56ID:/qk9IG8W gitに公開されているcpp環境を使おうとしたところ、サンプルコードのcppファイルのコンパイル時に
「undefined reference to 〜」
と出てコンパイルできませんでした。
何が原因かわかりますでしょうか?
操作した手順は以下になります。
#-------------
# 1. インストール
#-------------
git clone http://github.com/HomerReid/libGDSII
cd libGDSII
mkdir m4
sh autogen.sh --prefix=/home/user/install/libGDSII
make install
2. につづく
「undefined reference to 〜」
と出てコンパイルできませんでした。
何が原因かわかりますでしょうか?
操作した手順は以下になります。
#-------------
# 1. インストール
#-------------
git clone http://github.com/HomerReid/libGDSII
cd libGDSII
mkdir m4
sh autogen.sh --prefix=/home/user/install/libGDSII
make install
2. につづく
127デフォルトの名無しさん
2019/07/31(水) 14:08:46.05ID:/qk9IG8W #-------------
# 2. 下記URLにあるSample codeを元にファイル作成
# ->https://github.com/HomerReid/libGDSII
#-------------
--- xxx.cppファイルで保存 ---
#include "libGDSII.h"
using namespace std;
using namespace libGDSII;
int main(int argc, char *argv[]) {
/********************************************************************/
GDSIIData *gdsIIData = new GDSIIData( string("GSiP_4_RingFilter.gds") );
if (gdsIIData->ErrMsg)
{ printf("error: %s (aborting)\n",gdsIIData->ErrMsg->c_str());
exit(1);
}
/***************************************************************/
gdsIIData->WriteDescription(); // writes to console
gdsIIData->WriteDescription("MyOutputFile");
/***************************************************************/
PolygonList Layer3Polygons = gdsIIData->GetPolygons(3);
printf("Found %lu polygons on layer 3: \n",Layer3Polygons.size());
for(size_t np=0; np<Layer3Polygons.size(); np++)
{ printf("Polygon #%lu has vertices: ",np);
for(unsigned int nv=0; nv<Layer3Polygons[np].size()/2; nv++)
printf(" {%e,%e} ",Layer3Polygons[np][2*nv+0],Layer3Polygons[2*nv+1]);
printf("\n");
}
return 0;
}
3. につづく
# 2. 下記URLにあるSample codeを元にファイル作成
# ->https://github.com/HomerReid/libGDSII
#-------------
--- xxx.cppファイルで保存 ---
#include "libGDSII.h"
using namespace std;
using namespace libGDSII;
int main(int argc, char *argv[]) {
/********************************************************************/
GDSIIData *gdsIIData = new GDSIIData( string("GSiP_4_RingFilter.gds") );
if (gdsIIData->ErrMsg)
{ printf("error: %s (aborting)\n",gdsIIData->ErrMsg->c_str());
exit(1);
}
/***************************************************************/
gdsIIData->WriteDescription(); // writes to console
gdsIIData->WriteDescription("MyOutputFile");
/***************************************************************/
PolygonList Layer3Polygons = gdsIIData->GetPolygons(3);
printf("Found %lu polygons on layer 3: \n",Layer3Polygons.size());
for(size_t np=0; np<Layer3Polygons.size(); np++)
{ printf("Polygon #%lu has vertices: ",np);
for(unsigned int nv=0; nv<Layer3Polygons[np].size()/2; nv++)
printf(" {%e,%e} ",Layer3Polygons[np][2*nv+0],Layer3Polygons[2*nv+1]);
printf("\n");
}
return 0;
}
3. につづく
128デフォルトの名無しさん
2019/07/31(水) 14:09:39.80ID:/qk9IG8W #-------------
# 3. コンパイル
#-------------
gcc -I/home/user/install/libGDSII/include -o xxx xxx.cpp
/tmp/ccwjjcp2.o: In function `main':
xxx.cpp:(.text+0x54): undefined reference to `libGDSII::GDSIIData::GDSIIData(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
xxx.cpp:(.text+0xb8): undefined reference to `libGDSII::GDSIIData::WriteDescription(char const*)'
xxx.cpp:(.text+0xc9): undefined reference to `libGDSII::GDSIIData::WriteDescription(char const*)'
xxx.cpp:(.text+0xe4): undefined reference to `libGDSII::GDSIIData::GetPolygons(int)'
↑ここで落ちる
# 3. コンパイル
#-------------
gcc -I/home/user/install/libGDSII/include -o xxx xxx.cpp
/tmp/ccwjjcp2.o: In function `main':
xxx.cpp:(.text+0x54): undefined reference to `libGDSII::GDSIIData::GDSIIData(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
xxx.cpp:(.text+0xb8): undefined reference to `libGDSII::GDSIIData::WriteDescription(char const*)'
xxx.cpp:(.text+0xc9): undefined reference to `libGDSII::GDSIIData::WriteDescription(char const*)'
xxx.cpp:(.text+0xe4): undefined reference to `libGDSII::GDSIIData::GetPolygons(int)'
↑ここで落ちる
129デフォルトの名無しさん
2019/07/31(水) 14:28:29.92ID:OXiBQODl まずエラーメッセージ(undefined reference to )でググろう
130デフォルトの名無しさん
2019/07/31(水) 14:47:50.63ID:619hUwfJ 単純にライブラリ参照できてないだけだと思うけどなぜ作者に聞かないのか
131デフォルトの名無しさん
2019/07/31(水) 15:36:14.85ID:GSIi4G30 stdをusingする子は嫌いだよ
132デフォルトの名無しさん
2019/07/31(水) 16:18:44.92ID:/qk9IG8W ググりましたが難しかったです。
make install時に*.aなどのlibパスを入れるとか、コンパイル時にlibパスを入れるとかありましたがうまくいかず。。
作者がいるので問い合わせればよいですね。
まずは問い合わせてみます。
ありがとうございました。
make install時に*.aなどのlibパスを入れるとか、コンパイル時にlibパスを入れるとかありましたがうまくいかず。。
作者がいるので問い合わせればよいですね。
まずは問い合わせてみます。
ありがとうございました。
133デフォルトの名無しさん
2019/07/31(水) 17:43:06.37ID:5OHVc1Pr ライブラリの中身関係ない質問されるとか作者かわいそう
134デフォルトの名無しさん
2019/07/31(水) 18:10:51.91ID:qr1YW5nx ggrksファッキューって言われたら戻って来てね
優しいお兄ちゃん達が解決してくれるよ
優しいお兄ちゃん達が解決してくれるよ
135デフォルトの名無しさん
2019/07/31(水) 18:38:26.40ID:3lzQcoQt あれーmake installする前にmakeやるんじゃなかったっけ。ライブラリがそもそも生成されてないんじゃないの
それとライブラリのパス入れるときは-Lか-lだけどもしかして-Iでやってたりしない?
それとライブラリのパス入れるときは-Lか-lだけどもしかして-Iでやってたりしない?
136デフォルトの名無しさん
2019/07/31(水) 18:46:16.25ID:/POyZPT4 肝心のlibGDSIIをリンクしてるか?
137デフォルトの名無しさん
2019/07/31(水) 20:42:21.65ID:P7Lm1qLK >>131
理由は?
理由は?
138デフォルトの名無しさん
2019/07/31(水) 20:52:22.57ID:ik5GKAMP 理由なんてきくまでもないだろ
139デフォルトの名無しさん
2019/07/31(水) 22:08:20.49ID:MO/qze1m140デフォルトの名無しさん
2019/07/31(水) 22:09:40.65ID:619hUwfJ 名前空間の汚染
141デフォルトの名無しさん
2019/07/31(水) 22:41:36.16ID:IFyIPjvz using namespaceのデメリットが分からないのは名前空間を理解していないのでは
142デフォルトの名無しさん
2019/07/31(水) 22:53:59.23ID:P7Lm1qLK 実際問題、std は standard template library の 「standard(標準)」な
訳だから、using 使っても、他の何らかの(ライブラリなど)の名前と
衝突する可能性は低いですよね。汚染と言っても現実に衝突する可能性
は低い。もしstd::が必須なのであれば、Stdという接頭辞を最初から
付けていればよかったはずであって、敢えて std:: という 5文字分を
タイプする必要は無かったはず。
仮に何かと衝突するというなら設計の不味さを感じますね。
訳だから、using 使っても、他の何らかの(ライブラリなど)の名前と
衝突する可能性は低いですよね。汚染と言っても現実に衝突する可能性
は低い。もしstd::が必須なのであれば、Stdという接頭辞を最初から
付けていればよかったはずであって、敢えて std:: という 5文字分を
タイプする必要は無かったはず。
仮に何かと衝突するというなら設計の不味さを感じますね。
143デフォルトの名無しさん
2019/07/31(水) 22:59:46.59ID:IFyIPjvz ちょっと何言ってるか分からない・・・
144デフォルトの名無しさん
2019/07/31(水) 23:05:09.42ID:jjf+PlTq >>142
衝突する可能性は低いという前提が抑間違い。
お前さんは広範な標準ライブラリのすべてを熟知してstd名前空間で定義された名前とはぶつからない命名が常にできる自信はあるのかい?
今現在問題なかったとして、後に標準ライブラリが拡張されて、自分でつけた名前にぶつからない保証は?
そんな諸々の厄介ごとを回避するために名前空間はあるのだから、自分しか使わないソースで誰にも迷惑かけないなら好きにすればいいよ。
衝突する可能性は低いという前提が抑間違い。
お前さんは広範な標準ライブラリのすべてを熟知してstd名前空間で定義された名前とはぶつからない命名が常にできる自信はあるのかい?
今現在問題なかったとして、後に標準ライブラリが拡張されて、自分でつけた名前にぶつからない保証は?
そんな諸々の厄介ごとを回避するために名前空間はあるのだから、自分しか使わないソースで誰にも迷惑かけないなら好きにすればいいよ。
145デフォルトの名無しさん
2019/07/31(水) 23:06:54.23ID:jjf+PlTq 不要な抑の字が入ったのは無視して。
146デフォルトの名無しさん
2019/07/31(水) 23:18:20.34ID:pv+GZng6 設計の不味さを感じますね(ドヤァ
147デフォルトの名無しさん
2019/07/31(水) 23:26:41.52ID:pv+GZng6 仮に線形代数のベクトルクラスとか作ったらいきなり衝突するんだがな
他にも衝突しそうな名前なんか腐る程ある
何のための名前空間だと思ってんのかと小一時間
どうせ標準ライブラリしか使ったことが無いようなド素人なんだろ
他にも衝突しそうな名前なんか腐る程ある
何のための名前空間だと思ってんのかと小一時間
どうせ標準ライブラリしか使ったことが無いようなド素人なんだろ
148デフォルトの名無しさん
2019/07/31(水) 23:52:34.02ID:F67noKPW まぁ必要最低限のものだけimportしましょうっていうだけ
他言語と同じだよ
他言語と同じだよ
149デフォルトの名無しさん
2019/08/01(木) 00:01:43.50ID:x8K/VZkX >>128
libzzz.a または libzzz.so とリンクするには gcc のオプションに -L 該当ファイルのパス -l zzz が必要。
て事も知らないなら入門書からやり直しが必要な初歩レベル
libzzz.a または libzzz.so とリンクするには gcc のオプションに -L 該当ファイルのパス -l zzz が必要。
て事も知らないなら入門書からやり直しが必要な初歩レベル
150デフォルトの名無しさん
2019/08/01(木) 00:11:28.53ID:jAJZsaMK using namespaceが悪なのはヘッダのグローバル空間でかますのが絶対悪ってだけで
それ以外では大概どうでもいい話
それ以外では大概どうでもいい話
151デフォルトの名無しさん
2019/08/01(木) 01:27:47.64ID:EAAzAfmw >>142
競合するかどうかは問題の本質ではない。
using stdをつけてstd::を省略したコードは、using stdをつけていない他の環境に持っていったときに動かない。
std::をつけていれば、どんなusingが使われていようと関係なく動作する。
using stdを使うべきではない理由はこれだけで十分。
せっかく標準規格化されてどの環境でも同じように動作するライブラリのポータビリティを阻害するのは長い目で見ればデメリットしかないと思う。
競合するかどうかは問題の本質ではない。
using stdをつけてstd::を省略したコードは、using stdをつけていない他の環境に持っていったときに動かない。
std::をつけていれば、どんなusingが使われていようと関係なく動作する。
using stdを使うべきではない理由はこれだけで十分。
せっかく標準規格化されてどの環境でも同じように動作するライブラリのポータビリティを阻害するのは長い目で見ればデメリットしかないと思う。
152デフォルトの名無しさん
2019/08/01(木) 02:08:20.24ID:YZxnvLL/ プロのプログラマでもないしstdやboost使う程度なんで名前空間汚染問題とか大げさにしか思えない
大したコードでもないのにstd::つけまくってるコード見るとアホらしくなる
職業や用途あるいは個々人の技量によって求められるものは違うでしょうに、十把一絡げに議論して意味あるの?
大したコードでもないのにstd::つけまくってるコード見るとアホらしくなる
職業や用途あるいは個々人の技量によって求められるものは違うでしょうに、十把一絡げに議論して意味あるの?
153デフォルトの名無しさん
2019/08/01(木) 02:19:13.29ID:AVudDz+c >>152
元の質問者が何も分かってないから突っ込まれているだけで、問題点とか自分以外の人がどう認識しているかを知った上で、使う使わないって判断は好きにすればいいだろうよ。
元の質問者が何も分かってないから突っ込まれているだけで、問題点とか自分以外の人がどう認識しているかを知った上で、使う使わないって判断は好きにすればいいだろうよ。
154デフォルトの名無しさん
2019/08/01(木) 02:20:44.23ID:53RNnp/+ 意味無いと思うなら参加しなければいいだけ
趣味なら好きにすれば
趣味なら好きにすれば
155デフォルトの名無しさん
2019/08/01(木) 02:21:00.23ID:EAAzAfmw >>152
オレオレコードを一人で書いて満足するのが好きなら、別に止めはしない。
でもそんな主張をここでされても多分同意は得られないと思うよw
議論する気があるなら、みんなが分かるコードを書かないとだめでしょ。
オレオレコードを一人で書いて満足するのが好きなら、別に止めはしない。
でもそんな主張をここでされても多分同意は得られないと思うよw
議論する気があるなら、みんなが分かるコードを書かないとだめでしょ。
156デフォルトの名無しさん
2019/08/01(木) 02:21:21.39ID:xENMcR2S157デフォルトの名無しさん
2019/08/01(木) 02:52:55.71ID:EzhbGyK1 stdだけusingしてライブラリはusingしなければいいだけちゃうの?
158デフォルトの名無しさん
2019/08/01(木) 03:13:40.26ID:xENMcR2S それが都合がいいなら好きにすればいいんだよ
誰もstd名前空間は取り込んじゃいけないとは言ってない
そんなのは個々の設計の意思決定と責任の話で、std取り込む奴がアホとか取り込まないのがアホとかいう話じゃない
誰もstd名前空間は取り込んじゃいけないとは言ってない
そんなのは個々の設計の意思決定と責任の話で、std取り込む奴がアホとか取り込まないのがアホとかいう話じゃない
159デフォルトの名無しさん
2019/08/01(木) 05:07:42.89ID:z8lvaa68 ヘッダにusing namespace書くやつは許さんけど、実装部分では好きにさせてやれよ
160デフォルトの名無しさん
2019/08/01(木) 07:34:07.43ID:RgaAx32e >>151
「他の環境に持っていったときに動かない」って、どういうこと?
ソース丸ごと持っていくなら、ソースにusing namespace std;が含まれるから動くでしょ。
もしかして、ソースの一部だけコピペして持っていく場合の話?
「コピペでも動くソースにしなければならない」という主張はちょっとどうかとおもうけど。
「他の環境に持っていったときに動かない」って、どういうこと?
ソース丸ごと持っていくなら、ソースにusing namespace std;が含まれるから動くでしょ。
もしかして、ソースの一部だけコピペして持っていく場合の話?
「コピペでも動くソースにしなければならない」という主張はちょっとどうかとおもうけど。
161デフォルトの名無しさん
2019/08/01(木) 07:36:43.17ID:crx0fETR ソースレベルのライブラリを持ってくとか
162デフォルトの名無しさん
2019/08/01(木) 07:59:03.96ID:dXXftso1163デフォルトの名無しさん
2019/08/01(木) 08:05:18.75ID:xENMcR2S >>160
標準以外のライブラリの存在が全く想定できてない
自前のちょっとしたライブラリのヘッダでもusing namespace stdって書いてたら
その後or中でインクルードしたヘッダ類が全部巻き込まれて名前の衝突が起きうる
ソースでusingした後にインクルードした場合も同じ(これはあんま無いと思うけど
仮にライブラリとしてファイルが綺麗に別けられてても別のプロジェクトに移して動かない場合があるってのはこれのことでしょ
標準以外のライブラリの存在が全く想定できてない
自前のちょっとしたライブラリのヘッダでもusing namespace stdって書いてたら
その後or中でインクルードしたヘッダ類が全部巻き込まれて名前の衝突が起きうる
ソースでusingした後にインクルードした場合も同じ(これはあんま無いと思うけど
仮にライブラリとしてファイルが綺麗に別けられてても別のプロジェクトに移して動かない場合があるってのはこれのことでしょ
164デフォルトの名無しさん
2019/08/01(木) 08:20:05.74ID:RgaAx32e ヘッダの話なら最初からそう書いてほしい
165デフォルトの名無しさん
2019/08/01(木) 08:24:27.74ID:OXlLEF/q >>163はヘッダの話と一緒くたにしてるのか…
166デフォルトの名無しさん
2019/08/01(木) 08:30:48.58ID:EAAzAfmw ヘッダーにインラインで書くときはstd::つけて、ソースには個別にusingしてstd::を省略するってこと?
そんな面倒なことしてなにか良いことあるの?
そんな面倒なことしてなにか良いことあるの?
167デフォルトの名無しさん
2019/08/01(木) 08:41:54.03ID:xENMcR2S あーすまん、ヘッダには一切書かないのならわかる
ただ、標準と別のライブラリで衝突する名前があるならどちらかはusingしない、あるいは衝突するものはいちいち指定するかしなきゃいかんでしょ
ただ、標準と別のライブラリで衝突する名前があるならどちらかはusingしない、あるいは衝突するものはいちいち指定するかしなきゃいかんでしょ
168デフォルトの名無しさん
2019/08/01(木) 08:48:03.19ID:xENMcR2S169デフォルトの名無しさん
2019/08/01(木) 09:12:15.95ID:+lGsNRBr させたくないならそれが出来ないようにルールそのものが無いはずだ
でもルールがあるなら使っていいでしょう
それが出来るようにそのルールがあるんだから
それともルールはあるが使ってはいけないという宗教なの?
でもルールがあるなら使っていいでしょう
それが出来るようにそのルールがあるんだから
それともルールはあるが使ってはいけないという宗教なの?
170デフォルトの名無しさん
2019/08/01(木) 09:20:25.62ID:z8lvaa68 そういうのはもういいから
171デフォルトの名無しさん
2019/08/01(木) 09:21:49.05ID:53RNnp/+ 勝手にすれば?
172デフォルトの名無しさん
2019/08/01(木) 09:44:39.86ID:lFlDu5J/173デフォルトの名無しさん
2019/08/01(木) 09:53:26.68ID:cScMcWqS おれの職場ではコード規約でusing stdはもちろんその他の名前空間も省略禁止
ファイルローカルでaliasは可能というか推奨
基本的にコードは後で誰でもすぐ読めるように書く方針だからね
仕事で使うときはこんなもんだよ
似たようなの話でauto多用が読みやすいか読みにくいかは結構議論になる
こっちはまだ規約化されてないな
ファイルローカルでaliasは可能というか推奨
基本的にコードは後で誰でもすぐ読めるように書く方針だからね
仕事で使うときはこんなもんだよ
似たようなの話でauto多用が読みやすいか読みにくいかは結構議論になる
こっちはまだ規約化されてないな
174デフォルトの名無しさん
2019/08/01(木) 10:40:45.28ID:X8QVfxL8 関数の返り型にauto使いまくりなんですけどまずいですかね?
175デフォルトの名無しさん
2019/08/01(木) 12:15:50.33ID:RwOvmdDx auto & shared_data = *this->m_data;
とか多用してる
とか多用してる
176デフォルトの名無しさん
2019/08/01(木) 17:35:55.46ID:H6AbKfkF 構造体メンバ間のパディングをコンパイル時に知る方法
178デフォルトの名無しさん
2019/08/01(木) 18:18:03.26ID:tmRbumxZ auto導入によってハンガリアン記法が再評価の機運
179デフォルトの名無しさん
2019/08/01(木) 19:18:28.91ID:Ag3GiCEL >>156
流れ読んでないし本題には触れずにレスするけど同意
「ニワカなやつほど語りたがる」のは世の常だけど
C++ちょっと触っただけくらいの駆け出しのカスが
「C++は〜」なんて知った風に語ってるのたまにあるよなw
それも、スレに参加してるなかでお前一番素人やろってやつが
平然と調子こいてきたりするから驚く
流れ読んでないし本題には触れずにレスするけど同意
「ニワカなやつほど語りたがる」のは世の常だけど
C++ちょっと触っただけくらいの駆け出しのカスが
「C++は〜」なんて知った風に語ってるのたまにあるよなw
それも、スレに参加してるなかでお前一番素人やろってやつが
平然と調子こいてきたりするから驚く
180デフォルトの名無しさん
2019/08/01(木) 22:39:23.89ID:re8BbLkf すまないC++20の新機能諳じて言えない奴は例外なく初心者なので出ていってくれないか
181デフォルトの名無しさん
2019/08/01(木) 22:41:32.13ID:IjUNQuw2182デフォルトの名無しさん
2019/08/01(木) 22:51:01.89ID:i4bRK0c3 alignofとsizeof使えばわかるんじゃね
183デフォルトの名無しさん
2019/08/01(木) 22:56:22.56ID:8zpMvWHA パディングの有無ならstd::has_unique_object_representationsでわかると思う
どこにいくつあるかは難しい・・・
どこにいくつあるかは難しい・・・
184デフォルトの名無しさん
2019/08/01(木) 23:14:16.19ID:Phw6FYmd185デフォルトの名無しさん
2019/08/02(金) 01:30:02.97ID:Baufd8HM メンバポインタの差取る方法もありそう
規格の保証はなさそうだけど
規格の保証はなさそうだけど
186デフォルトの名無しさん
2019/08/02(金) 02:03:55.33ID:zOtmkI/7 >>151
using を絶対に全く使わないのであれば、そもそも namespace の概念自体が
意味が無いと思いますよ。タイプ量を減らすことはとても大切だからこそ、
衝突しない場合には、using を使えるように設計してされているわけですから。
もし絶対に std:: を付けるのであれば、例えば、std::vector と書かずに
最初から StdVector などと固定の名前でも良かったわけです。しかし
それだと長くなってコーディング効率が下がるので、可能ならば
std:: を省略して vector と書けるように設計されているわけです。
それこそが namespace の思想なのでしょう。
using を絶対に全く使わないのであれば、そもそも namespace の概念自体が
意味が無いと思いますよ。タイプ量を減らすことはとても大切だからこそ、
衝突しない場合には、using を使えるように設計してされているわけですから。
もし絶対に std:: を付けるのであれば、例えば、std::vector と書かずに
最初から StdVector などと固定の名前でも良かったわけです。しかし
それだと長くなってコーディング効率が下がるので、可能ならば
std:: を省略して vector と書けるように設計されているわけです。
それこそが namespace の思想なのでしょう。
187デフォルトの名無しさん
2019/08/02(金) 02:09:48.23ID:zOtmkI/7 >>173
usingを使わない方針は気持ちは分かります。しかし、usingを使い辛くなって
しまうのは想像力を働かせればSTLやC++の言語使用設計の段階から
最初から分かっていたはずで、そもそもSTLが最初からstd という
namespace に入れて有ること自体が余りセンスが無かった可能性があると
自分は思ってます。
usingを使わない方針は気持ちは分かります。しかし、usingを使い辛くなって
しまうのは想像力を働かせればSTLやC++の言語使用設計の段階から
最初から分かっていたはずで、そもそもSTLが最初からstd という
namespace に入れて有ること自体が余りセンスが無かった可能性があると
自分は思ってます。
188デフォルトの名無しさん
2019/08/02(金) 02:16:04.07ID:zOtmkI/7 1. std::string
2. StdString
3. CString
最も効率がいいのは、3 の CString でその意味では CString の設計者は
センスが良かったと私は思っています。using を使って std:: を書かないように
した場合、確かに何かのライブラリと衝突の危険性が出てきます。
ならば、標準のライブラリ(STL)は、デフォルトでは namespace の中に入れる
べきではなかったのではないかとも思います。
namespaceは、たまたま衝突が起きた場合には、その時点で使うと助かる場合が
あると思いますが、最初から入れてしまった事で新たな問題が入ってしまった
可能性があります。
2. StdString
3. CString
最も効率がいいのは、3 の CString でその意味では CString の設計者は
センスが良かったと私は思っています。using を使って std:: を書かないように
した場合、確かに何かのライブラリと衝突の危険性が出てきます。
ならば、標準のライブラリ(STL)は、デフォルトでは namespace の中に入れる
べきではなかったのではないかとも思います。
namespaceは、たまたま衝突が起きた場合には、その時点で使うと助かる場合が
あると思いますが、最初から入れてしまった事で新たな問題が入ってしまった
可能性があります。
189デフォルトの名無しさん
2019/08/02(金) 02:35:42.08ID:TGlmBsBg >>186
namespaceってその名の通り名前空間を分割することで識別子名の競合を避けて、命名の自由度を上げる(楽をする)ための機能でしょ。
ある程度大きな規模のプロジェクトでは大変重宝するものだと思うんだけど、なんかものすごく偏った理解のしかたしてない?
namespaceってその名の通り名前空間を分割することで識別子名の競合を避けて、命名の自由度を上げる(楽をする)ための機能でしょ。
ある程度大きな規模のプロジェクトでは大変重宝するものだと思うんだけど、なんかものすごく偏った理解のしかたしてない?
190デフォルトの名無しさん
2019/08/02(金) 02:46:27.31ID:TGlmBsBg >>188
CStringとタイプするには、shiftを押したり離したりしないといけないし、手間としてはstd::とそれほどかわらないと思うんだけどw
CStringとタイプするには、shiftを押したり離したりしないといけないし、手間としてはstd::とそれほどかわらないと思うんだけどw
191デフォルトの名無しさん
2019/08/02(金) 02:49:52.24ID:zOtmkI/7192デフォルトの名無しさん
2019/08/02(金) 02:51:05.19ID:zOtmkI/7193デフォルトの名無しさん
2019/08/02(金) 02:54:02.02ID:TGlmBsBg >>191
いやいや、実際はshiftを若干早くおしとかないと、cStringになっちゃったりするだろw
離す時も気をつけないとCSTringになっちゃったりするし。
それに最近のエディタ(統合開発環境)には補完機能が付いてるから、std::で候補が絞られる分、選択に有利に働く。
いやいや、実際はshiftを若干早くおしとかないと、cStringになっちゃったりするだろw
離す時も気をつけないとCSTringになっちゃったりするし。
それに最近のエディタ(統合開発環境)には補完機能が付いてるから、std::で候補が絞られる分、選択に有利に働く。
194デフォルトの名無しさん
2019/08/02(金) 02:54:16.42ID:1bW2v8eW >>186
外から使うことだけしか考えてないみたいだけど、名前空間内の実装を読み書きしやすくする効果もあるでしょ。
外から使うことだけしか考えてないみたいだけど、名前空間内の実装を読み書きしやすくする効果もあるでしょ。
195デフォルトの名無しさん
2019/08/02(金) 02:55:50.33ID:TGlmBsBg196デフォルトの名無しさん
2019/08/02(金) 03:01:42.94ID:zOtmkI/7 >>195
namespace std で囲まれている事で気が緩んで hoge みたいな短い名前付けて
しまうことで、std:: を外すことが不可能になってしまう恐れが有る。
結局なんのための名前空間なのか分からなくなってしまうという。
外せない名前空間なら、std_ でも Std でも Stl を付けた方がタイプ量が
少なく済んだのに。
namespace std で囲まれている事で気が緩んで hoge みたいな短い名前付けて
しまうことで、std:: を外すことが不可能になってしまう恐れが有る。
結局なんのための名前空間なのか分からなくなってしまうという。
外せない名前空間なら、std_ でも Std でも Stl を付けた方がタイプ量が
少なく済んだのに。
197デフォルトの名無しさん
2019/08/02(金) 03:04:55.47ID:TGlmBsBg >>196
あくまで外すことが前提なのかw
あくまで外すことが前提なのかw
198デフォルトの名無しさん
2019/08/02(金) 03:07:18.69ID:zOtmkI/7 >>195
大丈夫だと思って i という一文字のグローバル変数を定義したとしよう。
すると、std::i としている場合には問題ないが、using namespace std;
とした場合、大変な現象が起きる。伝統的な for のループ変数と衝突
するから。
大丈夫だと思って i という一文字のグローバル変数を定義したとしよう。
すると、std::i としている場合には問題ないが、using namespace std;
とした場合、大変な現象が起きる。伝統的な for のループ変数と衝突
するから。
199デフォルトの名無しさん
2019/08/02(金) 03:07:57.71ID:zOtmkI/7 >>197
絶対に外さないなら namespace に何のメリットが有るの。
絶対に外さないなら namespace に何のメリットが有るの。
200デフォルトの名無しさん
2019/08/02(金) 03:08:43.92ID:zOtmkI/7 >>197
外さないなら、StdVector, StdList で良かったはず。
外さないなら、StdVector, StdList で良かったはず。
201デフォルトの名無しさん
2019/08/02(金) 03:10:27.53ID:tRQdKQsJ 別に外さなくとも、その名前空間内で書くときは省略できるんで楽なんだけどな
(ライブラリ書いてるときとか
(ライブラリ書いてるときとか
202デフォルトの名無しさん
2019/08/02(金) 03:10:40.06ID:zOtmkI/7203デフォルトの名無しさん
2019/08/02(金) 03:11:25.60ID:zOtmkI/7204デフォルトの名無しさん
2019/08/02(金) 03:14:20.48ID:Baufd8HM この世の名前空間はstdしかないと思ってるのかな?
mylib::vectorとかyourlib::vectorとかを安心して作れるようにするための機能が名前空間だぞ
mylib::vectorとかyourlib::vectorとかを安心して作れるようにするための機能が名前空間だぞ
205デフォルトの名無しさん
2019/08/02(金) 03:15:42.09ID:zOtmkI/7 >>201
もしかしてアプリなどでは使わないのにライブラリを作ることだけで
満足している人たちが多いのでしょうか。
なるほど、それで stl や boost が究極にセンスの悪い代物になっているのかも
知れない。コンテナ類は、C/C++のリストの概念が全く理解できて無い人
が作ったとしか思えない。リストは構造がリストであればリスト足りえると
思っているのが頭が悪い。ポインタでアクセスできないリストはリストじゃない。
O(1)で済むところがO(N)になってしまっていて、stlは全くセンスの
悪い欠陥ライブラリ。
もしかしてアプリなどでは使わないのにライブラリを作ることだけで
満足している人たちが多いのでしょうか。
なるほど、それで stl や boost が究極にセンスの悪い代物になっているのかも
知れない。コンテナ類は、C/C++のリストの概念が全く理解できて無い人
が作ったとしか思えない。リストは構造がリストであればリスト足りえると
思っているのが頭が悪い。ポインタでアクセスできないリストはリストじゃない。
O(1)で済むところがO(N)になってしまっていて、stlは全くセンスの
悪い欠陥ライブラリ。
206デフォルトの名無しさん
2019/08/02(金) 03:17:07.37ID:zOtmkI/7 >>204
だったら MylibVector で十分。そのほうが短い。
接頭辞を変えたければ、grep置換すればいいだけ。wz grepで一発。
それともstlの設計者はgrep置換使ったことが無いんだろうか。
とても頭が悪い感じがする。
だったら MylibVector で十分。そのほうが短い。
接頭辞を変えたければ、grep置換すればいいだけ。wz grepで一発。
それともstlの設計者はgrep置換使ったことが無いんだろうか。
とても頭が悪い感じがする。
207デフォルトの名無しさん
2019/08/02(金) 03:37:49.81ID:Baufd8HM 最初にusing mylib::vector;って書いとけば以後は単にvectorと書いたらmylib::vectorの意味になるんだよ
vectorを100回使うならその方が短いだろ?
後でyourlibやmylib_ver2のvectorを使いたくなればgrep(笑)なんかしなくても最初のusing宣言を一箇所書き換えるだけでいい
名前空間ってのはそういう機能で、ただの接頭辞じゃねえんだよわかったか知恵遅れ
vectorを100回使うならその方が短いだろ?
後でyourlibやmylib_ver2のvectorを使いたくなればgrep(笑)なんかしなくても最初のusing宣言を一箇所書き換えるだけでいい
名前空間ってのはそういう機能で、ただの接頭辞じゃねえんだよわかったか知恵遅れ
208デフォルトの名無しさん
2019/08/02(金) 03:53:52.52ID:tRQdKQsJ■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
