C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part146
https://mevius.5ch.net/test/read.cgi/tech/1573094136/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://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/ (日本語)
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
↑え?だってお前、普通ダイナミックリンクするだろ?
"ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
探検
C++相談室 part147
■ このスレッドは過去ログ倉庫に格納されています
2019/12/18(水) 17:56:53.03ID:uFDqtnkl
115111
2019/12/31(火) 09:23:14.27ID:1NlDtb3g >>114
いや言語機能は大抵役に立つよそりゃ
役に立たないかも、ってのは彼らが主にブログとかで紹介してるようなテクニックのこと
完全型か不完全型かを判定するテクニック思いついたよ!(ODRに違反するので要件チェックでエラーにする為にしか使えないが、それは書いてない)とか
C++/CLI風のプロパティをテンプレートで作ってみたよ使ってね!とかな
実際に開発してて使ってたらそんな都合よくはいかんやん?開発に使ってる人間とはちょっと感覚がズレてるんだよな
いや言語機能は大抵役に立つよそりゃ
役に立たないかも、ってのは彼らが主にブログとかで紹介してるようなテクニックのこと
完全型か不完全型かを判定するテクニック思いついたよ!(ODRに違反するので要件チェックでエラーにする為にしか使えないが、それは書いてない)とか
C++/CLI風のプロパティをテンプレートで作ってみたよ使ってね!とかな
実際に開発してて使ってたらそんな都合よくはいかんやん?開発に使ってる人間とはちょっと感覚がズレてるんだよな
116デフォルトの名無しさん
2019/12/31(火) 09:37:10.17ID:qHnQy48w >>115
それは開発やってる人間が考えたってある前提では上手くいくが別の前提では使えないということもあるし、巷に溢れてる初心者でも書ける記事よりは価値があると思うよ。
参考になるところだけ拾って自分の役に立つときに取り出せればいいんでない?
それは開発やってる人間が考えたってある前提では上手くいくが別の前提では使えないということもあるし、巷に溢れてる初心者でも書ける記事よりは価値があると思うよ。
参考になるところだけ拾って自分の役に立つときに取り出せればいいんでない?
117111
2019/12/31(火) 09:38:38.18ID:wdGRUaME まぁそれはそうやね
なんだかんだ世話にはなってるし
なんだかんだ世話にはなってるし
118デフォルトの名無しさん
2019/12/31(火) 10:34:54.28ID:YPeginhU std::vector<std::string> で、登録済みのstringのc_str()が変化しないことを保証する方法ってないかな?
このままでも基本的にはムーブされることが期待できるけど、コピーが発生する可能性は否定できないよね?
このままでも基本的にはムーブされることが期待できるけど、コピーが発生する可能性は否定できないよね?
119デフォルトの名無しさん
2019/12/31(火) 11:23:41.27ID:8dhupYNq restrictがないからconst&から取得したc_strでも失効してることがあるよな
120デフォルトの名無しさん
2019/12/31(火) 11:48:24.20ID:qHnQy48w >>118
そのvectorに対してiteratorが無効になる操作をしないこと、およびその要素stringに対してc_strが無効になる操作をしないこと、ではいけないの?
そのvectorに対してiteratorが無効になる操作をしないこと、およびその要素stringに対してc_strが無効になる操作をしないこと、ではいけないの?
121デフォルトの名無しさん
2019/12/31(火) 11:56:10.87ID:6k+egH3+ vectorで書き換えられたくなければvector<string_view>にすれば
122デフォルトの名無しさん
2019/12/31(火) 11:57:01.13ID:8dhupYNq コピーを作って、参照ではなく元々constなオブジェクトにするしかねえべ
123デフォルトの名無しさん
2019/12/31(火) 12:01:50.45ID:YPeginhU ありがとう、そのままじゃ無理みたいだね。
std::vector<std::unique_ptr<std::string>>> にするわ。
std::vector<std::unique_ptr<std::string>>> にするわ。
124デフォルトの名無しさん
2019/12/31(火) 12:19:07.09ID:8dhupYNq vcとgccでは通るんだけどclangだけ引っかかる
const test obj;
return static_cast<test const&&>(obj); //ok
return move(obj); // warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
copy elisionを後押ししちゃダメってこと?
const test obj;
return static_cast<test const&&>(obj); //ok
return move(obj); // warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
copy elisionを後押ししちゃダメってこと?
125デフォルトの名無しさん
2019/12/31(火) 12:57:47.44ID:i0/j0IL1 そのまま読むと、「ムーブすると」コピー省略の妨げになるとしか書かれてない気がするけど
126デフォルトの名無しさん
2019/12/31(火) 13:11:47.23ID:6k+egH3+ 現代的なコンパイラならわざわざムーブする必要ないからね
最適化の邪魔になる可能性あるよって親切に教えてくれてるんでしょ
最適化の邪魔になる可能性あるよって親切に教えてくれてるんでしょ
127デフォルトの名無しさん
2019/12/31(火) 13:14:32.39ID:8dhupYNq 118からの流れで122を書いたんだけど
const付きで何かした結果をmoveでなら無理なくconst外し
できるのかって発想で実験してたんだ
const付きで何かした結果をmoveでなら無理なくconst外し
できるのかって発想で実験してたんだ
128デフォルトの名無しさん
2019/12/31(火) 14:21:00.13ID:jcurN+EG >>123
そんなことするくらいだったらstd::dequeの方がよくね?
そんなことするくらいだったらstd::dequeの方がよくね?
129デフォルトの名無しさん
2019/12/31(火) 14:39:44.01ID:YPeginhU std::list は大丈夫かもしれないけど std::deque は vector と同じような。
130デフォルトの名無しさん
2019/12/31(火) 14:56:19.70ID:jcurN+EG まぁ、std:dequeはチャンク単位でメモリ確保するから、頭とお尻の操作であればの再配置が行われないけど、途中要素だと再配置入るから保証は無理か。
131デフォルトの名無しさん
2019/12/31(火) 15:02:45.14ID:YPeginhU ああなるほど、dequeの尻に追加する分には既存の要素の再配置は起こらないのか。ありがとう。
132デフォルトの名無しさん
2019/12/31(火) 16:29:46.55ID:hkax3Wzu dequeの実装方法は規定されてなかったような
133デフォルトの名無しさん
2019/12/31(火) 17:01:07.64ID:jcurN+EG 詳しくは知らないけど、std::dequeにはreserveがないから、ちゃんと規定されているのではないかと思う。
134デフォルトの名無しさん
2020/01/01(水) 10:18:26.20ID:W3M0tzcA C++とか多重定義があるから関数名が内部で修飾されて違う名前にするの、英語でなんか呼び名があったと思うのですが
なんというのですか?
C++と多重定義に限らず、実際の名前と違うのを作ることを言うのかも知れなかったけど
なんというのですか?
C++と多重定義に限らず、実際の名前と違うのを作ることを言うのかも知れなかったけど
135デフォルトの名無しさん
2020/01/01(水) 10:23:41.44ID:kPvcajv8 マングリングのことかな
136デフォルトの名無しさん
2020/01/01(水) 14:22:17.23ID:W3M0tzcA137デフォルトの名無しさん
2020/01/01(水) 14:24:24.22ID:7xbR7AqI 昔から思ってるけど、マングリングっていう単語
ちょっと口にするのに抵抗ある感
ちょっと口にするのに抵抗ある感
138 【ぴょん吉】 【87円】
2020/01/01(水) 15:23:06.14ID:tqBP4ADq あけおめこ
とよろ
まんぐりがえし
とよろ
まんぐりがえし
139デフォルトの名無しさん
2020/01/01(水) 16:31:16.52ID:BCFJuGnw うちの会社は開発島のとなりに総務島があってマングリングを誤解するだろうお姉さま方がたくさんいるから、とても言えない。
わざと聞こえるように言って反応を見てみたい気もするが怖くて出来ない。
わざと聞こえるように言って反応を見てみたい気もするが怖くて出来ない。
140デフォルトの名無しさん
2020/01/01(水) 16:34:16.30ID:9/85Pj9b そんな事をいちいち気にしなきゃいけないとか大変だな
置換とか正規表現とかも言うなよ
置換とか正規表現とかも言うなよ
141デフォルトの名無しさん
2020/01/01(水) 20:13:50.83ID:57Nye4dF マングリング返し
142デフォルトの名無しさん
2020/01/02(木) 09:10:44.11ID:hTPsjNJF 公園で置換
143デフォルトの名無しさん
2020/01/02(木) 10:54:51.63ID:fRqsjLPx 置換みたいな面倒なのは通勤電車の中で済ませろ
144デフォルトの名無しさん
2020/01/02(木) 13:02:38.31ID:vIdqLkFw string GetAnswer(string mode, string text) {
std::string ques, ans;
if (mode == "Read") {
std::ifstream ifs("xxxx.txt", std::ios::in);
ques = text;
}
else if (mode == "Write") {
std::ifstream ifs("xxxx.txt");
ques = split(text, ":")[0];
}
std::string str;
ans = "not_found";
std::vector<std::string> line;
while (getline(ifs, str))
{
・・・・・・・・・
}
l・・・・・・・・
この状態でgetlineを読み込まないのはなぜですか。
std::string ques, ans;
if (mode == "Read") {
std::ifstream ifs("xxxx.txt", std::ios::in);
ques = text;
}
else if (mode == "Write") {
std::ifstream ifs("xxxx.txt");
ques = split(text, ":")[0];
}
std::string str;
ans = "not_found";
std::vector<std::string> line;
while (getline(ifs, str))
{
・・・・・・・・・
}
l・・・・・・・・
この状態でgetlineを読み込まないのはなぜですか。
145デフォルトの名無しさん
2020/01/02(木) 13:04:51.69ID:vIdqLkFw std::ifstream ifs("xxxx.txt");
if (mode == "Read") {
// std::ifstream ifs("xxxx.txt", std::ios::in) //コメントで外す; もしくは削除
ques = text;
}
else if (mode == "Write") {
// std::ifstream ifs("xxxx.txt"); //コメントで外す、もしくは削除
ques = split(text, ":")[0];
}
こうすれば、まともに動くのですが、前記の状態で動かないのはなぜですか。
modeは"Read"と""Write"しかないのですが。
if (mode == "Read") {
// std::ifstream ifs("xxxx.txt", std::ios::in) //コメントで外す; もしくは削除
ques = text;
}
else if (mode == "Write") {
// std::ifstream ifs("xxxx.txt"); //コメントで外す、もしくは削除
ques = split(text, ":")[0];
}
こうすれば、まともに動くのですが、前記の状態で動かないのはなぜですか。
modeは"Read"と""Write"しかないのですが。
146デフォルトの名無しさん
2020/01/02(木) 13:16:19.00ID:fRqsjLPx if抜けたらそれはどこへ逝く?
147デフォルトの名無しさん
2020/01/02(木) 13:19:25.49ID:+UNtt4nj >>145
コンパイルエラーじゃね?
コンパイルエラーじゃね?
148デフォルトの名無しさん
2020/01/02(木) 13:23:42.58ID:fRqsjLPx グローバルのスコープにあるんじゃね
149デフォルトの名無しさん
2020/01/02(木) 13:38:13.22ID:+UNtt4nj グローバルスコープにあるならオープンされてなさそうだね
150デフォルトの名無しさん
2020/01/02(木) 19:15:39.81ID:G5uvQucS 質問ですが以下のコードのように、enum Barが
クラスFooの中でprivateなサブタイプとして定義されているときに、
enum Barで定義されている定数TAG1やTAG2を
ラムダ式の定義の中からクラス名修飾無しで使うにはどうしたらいいんですかね…
class Foo {
private:
enum Bar { TAG1, TAG2, TAG3 };
public:
enum Bar some_method();
enum Bar launch(std::function<enum Bar(int)> func);
};
Foo::Bar Foo::some_method() {
// メソッドの地の文
printf("TAG1=%d\n", TAG1); // これはクラス名修飾無しでもOK
// ラムダ式の定義
auto lambdaFunc = [=](int x)->enum Bar{
if (x == 1) {
return Foo::TAG1; // これはクラス名修飾しないとコンパイルエラー
} else {
return Foo::TAG2; // これもクラス名修飾しないとコンパイルエラー
}
};
// ラムダ式を使う
return launch(lambdaFunc);
}
クラスFooの中でprivateなサブタイプとして定義されているときに、
enum Barで定義されている定数TAG1やTAG2を
ラムダ式の定義の中からクラス名修飾無しで使うにはどうしたらいいんですかね…
class Foo {
private:
enum Bar { TAG1, TAG2, TAG3 };
public:
enum Bar some_method();
enum Bar launch(std::function<enum Bar(int)> func);
};
Foo::Bar Foo::some_method() {
// メソッドの地の文
printf("TAG1=%d\n", TAG1); // これはクラス名修飾無しでもOK
// ラムダ式の定義
auto lambdaFunc = [=](int x)->enum Bar{
if (x == 1) {
return Foo::TAG1; // これはクラス名修飾しないとコンパイルエラー
} else {
return Foo::TAG2; // これもクラス名修飾しないとコンパイルエラー
}
};
// ラムダ式を使う
return launch(lambdaFunc);
}
151デフォルトの名無しさん
2020/01/02(木) 19:27:46.90ID:LbxbUX1g152デフォルトの名無しさん
2020/01/02(木) 20:18:42.74ID:G5uvQucS >>151
レスdクス、だいたい動いたのですがMSVC 2010だと1点変更が必要でしたorz
↓17行目
https://ideone.com/PYoVfL
some_method()の定義をクラスFooの定義外に持っていっても同じ。
ラムダ式の中でFoo::TAG1とせねばならないというのは誤認だった模様サーセン、
しかし上のような新たな闇に行き当たってしまった、、、
レスdクス、だいたい動いたのですがMSVC 2010だと1点変更が必要でしたorz
↓17行目
https://ideone.com/PYoVfL
some_method()の定義をクラスFooの定義外に持っていっても同じ。
ラムダ式の中でFoo::TAG1とせねばならないというのは誤認だった模様サーセン、
しかし上のような新たな闇に行き当たってしまった、、、
153デフォルトの名無しさん
2020/01/02(木) 20:21:51.56ID:G5uvQucS154デフォルトの名無しさん
2020/01/02(木) 20:32:11.41ID:/0b57Mnr C++11ですらない化石はさすがに使う方が悪い
156デフォルトの名無しさん
2020/01/02(木) 20:35:08.33ID:LbxbUX1g https://ideone.com/b6s1Oi
>>152 病みすぎて良くわからん。
>>153 Ideonでは動いているので、環境が古すぎるとしか言いようがないな。
2010ってそろそろ10年前といっても差し支えない程度に古いぞ。
>>152 病みすぎて良くわからん。
>>153 Ideonでは動いているので、環境が古すぎるとしか言いようがないな。
2010ってそろそろ10年前といっても差し支えない程度に古いぞ。
157デフォルトの名無しさん
2020/01/02(木) 20:42:19.47ID:LbxbUX1g そういえば、ドラフトのIO2Dってどうなったんすか?
158デフォルトの名無しさん
2020/01/02(木) 21:38:42.85ID:/mhKa7TF 頓挫したんじゃない?
一時期どんなものかと資料調べてだけどまとまってなかったよ。今どうなんだろうね?
一時期どんなものかと資料調べてだけどまとまってなかったよ。今どうなんだろうね?
159デフォルトの名無しさん
2020/01/02(木) 21:50:26.55ID:LbxbUX1g ぐあ、残念。
160デフォルトの名無しさん
2020/01/02(木) 22:43:44.99ID:NQs+pspB ideoneが未だにジム神様としか読めない
161デフォルトの名無しさん
2020/01/02(木) 22:53:50.64ID:LbxbUX1g 俺はアニメのほう思い出すよ。見たことないけど。
162デフォルトの名無しさん
2020/01/02(木) 23:23:24.45ID:vIdqLkFw163デフォルトの名無しさん
2020/01/02(木) 23:46:28.42ID:HVAsQwCl164デフォルトの名無しさん
2020/01/03(金) 12:08:13.91ID:lHIykz7y165デフォルトの名無しさん
2020/01/03(金) 13:55:16.44ID:fIUwKVUy 初心者なんてそんなもんだろ
>>145
if/else文の中で宣言されたifsはブロック{}で囲まれてしまっているから、ブロックの外からアクセスできない。
だからgetlineに渡してるifsはどこか別の場所にあるifsを参照してしまっている。
std::fstream fs; //< 読み書き両用にするなら"fstream"にすること
if (mode == "Read") {
. fs.open("xxxx.txt", std::ios::in);
. ques = text;
}
else if (mode == "Write") {
. fs.open("xxxx.txt");
. ques = split(text, ":")[0];
}
...
getline(fs, str)
>>145
if/else文の中で宣言されたifsはブロック{}で囲まれてしまっているから、ブロックの外からアクセスできない。
だからgetlineに渡してるifsはどこか別の場所にあるifsを参照してしまっている。
std::fstream fs; //< 読み書き両用にするなら"fstream"にすること
if (mode == "Read") {
. fs.open("xxxx.txt", std::ios::in);
. ques = text;
}
else if (mode == "Write") {
. fs.open("xxxx.txt");
. ques = split(text, ":")[0];
}
...
getline(fs, str)
166デフォルトの名無しさん
2020/01/03(金) 17:20:32.66ID:f1l2rf84167デフォルトの名無しさん
2020/01/08(水) 07:56:51.57ID:L9bP3bPr >>166
いえいえ
いえいえ
168デフォルトの名無しさん
2020/01/08(水) 11:04:42.16ID:5cG1OuZI vector<vector<vector<char>>> data(10, vector<vector<char>>(3, vector<char>(3)));
だと,、char[10][3][3]になると思うのですが
[10]の部分だけ動的にするにはどうすればいいのでしょうか。
だと,、char[10][3][3]になると思うのですが
[10]の部分だけ動的にするにはどうすればいいのでしょうか。
169デフォルトの名無しさん
2020/01/08(水) 11:09:21.62ID:tEaTJVpu [3][3]を固定にしたいってことか?
170デフォルトの名無しさん
2020/01/08(水) 11:09:38.70ID:5cG1OuZI そうです。
171デフォルトの名無しさん
2020/01/08(水) 11:16:31.83ID:qsayucr9 class/structの勉強をしましょう
172デフォルトの名無しさん
2020/01/08(水) 11:22:22.12ID:tEaTJVpu >>168
vector<array<array<char, 3>, 3>> data(10);
vector<array<array<char, 3>, 3>> data(10);
173デフォルトの名無しさん
2020/01/08(水) 11:23:40.31ID:5cG1OuZI 構造体もvectorに入れられるのですね。
ありがとうございます。
ありがとうございます。
174デフォルトの名無しさん
2020/01/08(水) 21:49:44.02ID:PRP72WQ5 ちなみに class と struct はデフォルトが public か private か、という違いしかない
事実上同じもの
事実上同じもの
175デフォルトの名無しさん
2020/01/09(木) 00:07:44.02ID:KXHiDU3s >>173
いえいえ
いえいえ
176デフォルトの名無しさん
2020/01/09(木) 10:15:27.59ID:LsvkYb1v C++のclassとstructはデフォのアクセス指定以外全く同じものだとちゃんと教えない教材がちらほらあるのが悪い
そもそもclassより先にstructをCの構造体の感覚で教えるやつは教える側がちゃんと理解してない可能性すらある
そもそもclassより先にstructをCの構造体の感覚で教えるやつは教える側がちゃんと理解してない可能性すらある
177デフォルトの名無しさん
2020/01/09(木) 10:55:03.06ID:0RBXSUPh そこまで言うなら
struct の方をさっさと deprecated - obsoleted すれば良かったんよ
20年位前にやっとけば良かった
struct の方をさっさと deprecated - obsoleted すれば良かったんよ
20年位前にやっとけば良かった
178デフォルトの名無しさん
2020/01/09(木) 11:59:01.69ID:+yE1fb2H というかclassが要らん
private: 一行書けばいいだけだろ
まあ最近ではGoやRustによってstructが復権してるけど、
当時はオブジェクト指向の用語に対して変なコンプレックスがあったんだろうな
private: 一行書けばいいだけだろ
まあ最近ではGoやRustによってstructが復権してるけど、
当時はオブジェクト指向の用語に対して変なコンプレックスがあったんだろうな
179デフォルトの名無しさん
2020/01/09(木) 12:47:07.90ID:zQlYINS8 >>178
そうそう
|
| 彡⌒ミ
\ (´・ω・`)デフォルトのアクセス指定子を定義したことは,十中八九,間違いであった.
(| |)::::
(γ /:::::::
し \:::
\
そうそう
|
| 彡⌒ミ
\ (´・ω・`)デフォルトのアクセス指定子を定義したことは,十中八九,間違いであった.
(| |)::::
(γ /:::::::
し \:::
\
180デフォルトの名無しさん
2020/01/09(木) 12:52:15.14ID:LsvkYb1v 指定子書き忘れにデフォがprivateならコンパイルエラーでわかるがpublicならわからん
デフォはprivateの方がいい
デフォはprivateの方がいい
181デフォルトの名無しさん
2020/01/09(木) 12:55:55.27ID:zQlYINS8 禁止がデフォで許可が明示な
constも本当はそうなっていて欲しい
ラムダ式の[=]だけデフォconstになっててmutableで外すんだけどね
constも本当はそうなっていて欲しい
ラムダ式の[=]だけデフォconstになっててmutableで外すんだけどね
182デフォルトの名無しさん
2020/01/09(木) 18:49:23.86ID:vYl+3riX 全部コンパイルオプションで対応できそうなのに
っていうかRustいらなくならなくね
っていうかRustいらなくならなくね
183デフォルトの名無しさん
2020/01/09(木) 20:02:43.03ID:dcOC3Udy >>181
最適化禁止のvolatileがデフォはウザすぎる
最適化禁止のvolatileがデフォはウザすぎる
184デフォルトの名無しさん
2020/01/09(木) 20:46:00.27ID:jeGBkGmG volatileってC++20で死ぬんでしょ?
185デフォルトの名無しさん
2020/01/09(木) 20:53:16.18ID:dcOC3Udy まじか
SFRとかどうすんだよ
SFRとかどうすんだよ
186デフォルトの名無しさん
2020/01/09(木) 21:18:47.87ID:VFRbhrWi volatileの有用な機能のみを残し、効果が疑わしい、または壊れている機能を非推奨化する
完全に消える分けでは無いらしい
詳細は知らん
完全に消える分けでは無いらしい
詳細は知らん
187デフォルトの名無しさん
2020/01/09(木) 21:55:38.56ID:SnSt17is >>176
まじですか、C++のstructも構造体だと思っていたけど。
知らなかった。
プロパティだけならstructの中の変数とclassの中の変数
って、あまり変わらない気がするけど、classの方はメンバ
とか言われる実質は関数を含むことができるじゃない。
あと、親から継承したりとか。
なんとなく同じものという感じがしない。
まじですか、C++のstructも構造体だと思っていたけど。
知らなかった。
プロパティだけならstructの中の変数とclassの中の変数
って、あまり変わらない気がするけど、classの方はメンバ
とか言われる実質は関数を含むことができるじゃない。
あと、親から継承したりとか。
なんとなく同じものという感じがしない。
188デフォルトの名無しさん
2020/01/09(木) 22:06:14.43ID:LsvkYb1v structもメンバ関数を持つし、継承もするし、classをstructが継承することもその逆もできる
デフォがpublicかprivateかの違いだけで機能はclassと全く同じ
デフォがpublicかprivateかの違いだけで機能はclassと全く同じ
189デフォルトの名無しさん
2020/01/09(木) 22:23:38.89ID:SnSt17is190デフォルトの名無しさん
2020/01/09(木) 23:18:29.42ID:3XE25/Yj なんかboostスレ死んでるからここで教えてください。
boost使ってクラサバ作ってて、クライアントが接続されるたびに、サーバ側で比較的重い処理があり、
処理止めたく無いからio_serviceに溜まったキューの数見てスレッドを動的に調整したい。
けど、自分の拙い検索能力ではio_serviceに溜まってるキューの数を調べる方法が無さそうなんですが、取得することは可能ですか?
よろしくお願いします。
boost使ってクラサバ作ってて、クライアントが接続されるたびに、サーバ側で比較的重い処理があり、
処理止めたく無いからio_serviceに溜まったキューの数見てスレッドを動的に調整したい。
けど、自分の拙い検索能力ではio_serviceに溜まってるキューの数を調べる方法が無さそうなんですが、取得することは可能ですか?
よろしくお願いします。
191デフォルトの名無しさん
2020/01/10(金) 08:52:59.23ID:cqQYZnld 許容されるスレッド数で常にフルスロットルじゃいかんのけ?
処理がないスレッドは勝手に止まってるし、なんならセマフォで動作数も調節もできるだろうし
処理がないスレッドは勝手に止まってるし、なんならセマフォで動作数も調節もできるだろうし
192デフォルトの名無しさん
2020/01/10(金) 20:10:30.90ID:gdjTauNe スレッド増やしたところで本質的な解決にならん問題な気がする。
193デフォルトの名無しさん
2020/01/11(土) 00:59:53.64ID:NtF2wljx キューの前にガバナー、調速機を付ければいい
キューに入れた個数と出てきた個数をカウントすりゃいいんだろ
スプールでも作ればいいんじゃないの
キューに入れた個数と出てきた個数をカウントすりゃいいんだろ
スプールでも作ればいいんじゃないの
194デフォルトの名無しさん
2020/01/11(土) 01:12:20.76ID:mrkcLLQe 質問ですがstd::function<T>型のオブジェクトにNULLって代入していいの?
195デフォルトの名無しさん
2020/01/11(土) 01:15:06.58ID:GiJYoHUo196デフォルトの名無しさん
2020/01/11(土) 01:43:57.60ID:mrkcLLQe なるほど!
dクス、
dクス、
197デフォルトの名無しさん
2020/01/11(土) 15:19:42.16ID:hPLqZ0ty C++11の知識でC++書いてるけど、特に不便ないな
最新のC++だと何ができるの?
最新のC++だと何ができるの?
198デフォルトの名無しさん
2020/01/11(土) 15:29:42.91ID:pEBt3sLq なら知らなくていいんじゃない?
199デフォルトの名無しさん
2020/01/11(土) 15:47:51.76ID:9vrnWCM9 お前がC++11で十分と思っていても他人はお前に遠慮なんかせずC++20の記法で書く
お前がヘッダーをよこせと言ってもモジュールしか提供されない
お前がヘッダーをよこせと言ってもモジュールしか提供されない
200デフォルトの名無しさん
2020/01/11(土) 17:14:40.32ID:hPLqZ0ty なにを怒ってるんだよ
イージーになろうぜ、イージー
イージーになろうぜ、イージー
201デフォルトの名無しさん
2020/01/11(土) 17:26:39.19ID:hPLqZ0ty 俺は久しぶりにC++を書いて機嫌がいいんだ
あまり怒らせるなよ
あまり怒らせるなよ
202デフォルトの名無しさん
2020/01/11(土) 17:33:49.75ID:7JWsqvWB 標準ライブラリにはまだモジュール使われないんだろ?
20の次あたりでモジュール版も出てくるかどうかだろ
20の次あたりでモジュール版も出てくるかどうかだろ
203デフォルトの名無しさん
2020/01/11(土) 17:48:06.88ID:XaO4QoYK >>202
シルカばーーーか
シルカばーーーか
204デフォルトの名無しさん
2020/01/11(土) 17:53:38.30ID:hPLqZ0ty モジュールって何?
205デフォルトの名無しさん
2020/01/11(土) 18:22:48.55ID:G3Wgm73J モジュールってテンプレート持てるの?
206デフォルトの名無しさん
2020/01/11(土) 18:28:46.90ID:AvFBkNTe またテンプレートの分割コンパイルを誰かが1年ぐらいかけて実装して、
できたころには陳腐化しているという歴史の繰り返し
永遠に枯れない
できたころには陳腐化しているという歴史の繰り返し
永遠に枯れない
207デフォルトの名無しさん
2020/01/11(土) 19:01:55.71ID:hPLqZ0ty gcc10入れた!
-std=c++2aでモジュールって使えるの?
-std=c++2aでモジュールって使えるの?
208デフォルトの名無しさん
2020/01/11(土) 19:15:28.94ID:hPLqZ0ty なんだ-std=c++2aでは使えないみたいだな
概念的にはGoのpackageに近いのかな?
概念的にはGoのpackageに近いのかな?
209デフォルトの名無しさん
2020/01/11(土) 19:29:30.73ID:OEMCT43T 多分もう相手されないから引っ込んだ方がいいよ
210デフォルトの名無しさん
2020/01/11(土) 19:30:41.47ID:hPLqZ0ty なんでだよー><
相手してくれよー><
うわわわわん
相手してくれよー><
うわわわわん
211デフォルトの名無しさん
2020/01/11(土) 22:12:41.17ID:o20hTksc212デフォルトの名無しさん
2020/01/12(日) 05:48:12.78ID:LolRUOoj 1) mkl_blas.h がシステムに存在したらそれをインクルードし、行列行列積ルーチンとして (C++で実装された) dgemmを使う。
2) mkl_blas.hが存在しなければFortranルーチンのdgemm_を使う。
というのを実現したいとします。
mkl_blas.h もないし Fortranルーチンもないという状況は考えません。
関数名の末尾のアンダースコアの有無がややこしくて困っています。
#if __has_include(<mkl_blas.h>)
#include<mkl_blas.h>
#define dgemm_ dgemm
#else
extern "C" void dgemm_(省略);
#endif
としておいて、プログラム中の行列行列積ルーチンは全てdgemm_と書くことでお茶を濁しているのですが、もっとスマートな方法はありますか。
#define dgemm_ dgemm
という部分がいかにも場当たり的で気に入らないです。
2) mkl_blas.hが存在しなければFortranルーチンのdgemm_を使う。
というのを実現したいとします。
mkl_blas.h もないし Fortranルーチンもないという状況は考えません。
関数名の末尾のアンダースコアの有無がややこしくて困っています。
#if __has_include(<mkl_blas.h>)
#include<mkl_blas.h>
#define dgemm_ dgemm
#else
extern "C" void dgemm_(省略);
#endif
としておいて、プログラム中の行列行列積ルーチンは全てdgemm_と書くことでお茶を濁しているのですが、もっとスマートな方法はありますか。
#define dgemm_ dgemm
という部分がいかにも場当たり的で気に入らないです。
213デフォルトの名無しさん
2020/01/12(日) 09:50:22.73ID:GTFqFgmO usingで別名にしてしまうとか?
214デフォルトの名無しさん
2020/01/12(日) 09:59:58.48ID:g8OSapKt 俺ならソースにdgemm_みたいなのがあるのは嫌だから
#if __has_include(<mkl_blas.h>)
#include<mkl_blas.h>
#else
#define dgemm dgemm_
extern "C" void dgemm_(省略);
#endif
ってやると思う
#if __has_include(<mkl_blas.h>)
#include<mkl_blas.h>
#else
#define dgemm dgemm_
extern "C" void dgemm_(省略);
#endif
ってやると思う
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
