[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 21:10 / Filesize : 275 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part158



1 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 18:49:18.44 ID:I69rZ/Of.net]
前スレ
C++相談室 part157
https://mevius.5ch.net/test/read.cgi/tech/1628474251/

876 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 06:29:47.80 ID:DI/GcuLa.net]
いろんな範囲で一様乱数を次々と生成したいときってどうしますか?
uniform_int_distribution の範囲を次々と param で変える?
あるいは、妥協して剰余をとる形で範囲を変える?

877 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 06:32:11.91 ID:DI/GcuLa.net]
あるいは、uniform_int_distribution を次々と生成して使い捨てる?

実測するべきなんでしょうが、どれがオーバーヘッドが少ないかというカンがありません

878 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 06:51:44.09 ID:rfXE6dHR.net]
色々手はあるね
「いろんな範囲」の個数が決まっているならuniform_int_distributionの配列にするもよし
ランダムならparamもよし

次々と生成して使い捨て、つまりコンストラクタとデストラクタを都度実行するのは
俺はあんまりやりたくないが止めもしない

879 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 07:21:47.95 ID:JnTPIF3C.net]
>>865
同じ範囲を何回も使うならその分distributionを用意する、そうでないならparamを変えていくのが良さそうに思います。が、たぶん実行時の差はほぼ無いです。
いちおう関数の定数を書き換えていくかメモリ上に予めたくさん用意するかの違いとして判断しました。
計算重いのは大抵は乱数生成の方だと思うので、速くしたいならそっちをとりかえたほうがいいと思います。

880 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 07:48:28.31 ID:rfXE6dHR.net]
メルセンヌツイスターの売りの1つが速度がそんなに遅くない点だね

881 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:06:40.11 ID:+NRIy/Ul.net]
なんで剰余を取るのが妥協なん?

882 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:33:38.50 ID:SeV3jiEK.net]
一様性が一般に崩れるから

883 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:37:30.83 ID:SeV3jiEK.net]
個人的にはこうやってみたりしてゐる、

/// 閉区間[0, ub]を値域とする一様乱数を生成する。
unsigned long genrand_int32_with_ub(unsigned long ub)
{
assert(0 < ub && ub < (unsigned long)UINT32_MAX);
const uint64_t F = (uint64_t)UINT32_MAX;
const uint64_t W = (uint64_t)ub + (uint64_t)1;
const uint64_t Q = F / W;
#ifndef NDEBUG
const uint64_t R = F - W * Q;
assert(Q > 0 && 0 <= R && R < W);
#endif
// 半開区間[0, (W+1)*Q)を値域とする一様乱数取得
const uint64_t WQ = W * Q;
uint64_t rndLTWQ;
do {
rndLTWQ = (uint64_t)genrand_int32();
//print

884 名前:f("rndLTWQ=0x%08x, Q=0x%016llu\n", rndLTWQ, Q);
} while (rndLTWQ >= WQ);

// Qで割る。
const uint64_t r = rndLTWQ / Q;
assert(0 <= r && r <= ub);
return (unsigned long)r;
}
[]
[ここ壊れてます]



885 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:52:20.14 ID:cIrOgCom.net]
標準ライブラリ使わんの?

886 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 11:12:52.07 ID:nD0XyBZB.net]
>>869
分かり易い例として 0 から 9 の一様な乱数列を生成するものを考えてみればいい。
このとき 0 から 7 の値が必要だからといって 8 の余剰を取ったらどうなる?
8, 9 が 0, 1 になるから 0 と 1 の出現確率が他の倍になってしまうだろ。

生成される値の幅が必要な値の幅よりも十分に大きいなら
許容可能な誤差として無視できる場合も多いとは思うが
様々なパラメータが有りうる状況では検証しづらい。

887 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 11:15:35.52 ID:nD0XyBZB.net]
>>872
呼出しのたびに必要な範囲が違うような Distribution が標準に無いという文脈

888 名前:ハノン mailto:sage [2022/02/13(日) 12:39:58.09 ID:1UprWsoO.net]
>>873
それもあるけれども、昔の擬似乱数列は絶望的なまでに下位桁がランダムではない、という事情をひきずっているのでは?まあ MT はそうじゃないけどね

889 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 13:09:41.79 ID:+NRIy/Ul.net]
>>873
そらもちろん、元がそんな狭い範囲ならだめでしょ
あとまあ昔のrand的には割ってかけるのが正しいというのはあるけどそれは別の話で

890 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 13:37:58.02 ID:PyRRUUG6.net]
C++何の関係もない話で草
検証が必要ならすればいいだけ
要件すら不明で何もしてないのに質問するやつが馬鹿

891 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 14:27:27.60 ID:nD0XyBZB.net]
>>876
> 元がそんな狭い範囲ならだめでしょ

逆に欲しい範囲が大きい場合でも同様。
この場合は様々な範囲が有りうるという想定なので、都合の悪い状況も考慮する必要がある。

892 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 15:14:31.28 ID:GfZrXG+U.net]
任意の区間の乱数って、どうせはみ出した分をちょん切るんでしょ?

893 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 15:18:24.06 ID:nD0XyBZB.net]
せやで。

894 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 15:25:43.89 ID:CS3pmCmc.net]
そんな短い周期の疑似乱数使ってないんじゃない?
端っこは気にしないと思うなあ



895 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:00:39.64 ID:yoBtg/nD.net]
>>876
> そらもちろん、元がそんな狭い範囲ならだめでしょ
「分かり易い例」って書いてあるのも理解できないの?

896 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:06:17.09 ID:CS3pmCmc.net]
一般論でいうと周期に余裕がない様な疑似乱数使うのが間違いなんだと思うけどね

897 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:19:57.08 ID:kSk9XozZ.net]
そういうのを乱数知識ない奴が触らずに済むようにパッケージにしたのが<random>のdistributionなんだから素直に頼っとけよ

898 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:42:35.21 ID:JnTPIF3C.net]
周期と値域は別では

899 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:56:02.36 ID:KditTIA5.net]
>>885
内部的にはおおむね同じです

900 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 17:04:20.08 ID:nD0XyBZB.net]
線形合同法とかなら値の範囲と周期が一致することもあるが、乱数の一般的性質というわけではない。

901 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 17:59:20.78 ID:av/6iEu7.net]
周期と値域は別だろ
たとえばマイナス一億と、プラス一億の2値をとる乱数とか

902 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:15:27.44 ID:AOBvb97v.net]
疑似乱数なんて今の値で次の値が決まるんだから周期も値も同じだろう
その値の一部を使ったらまあ見た目は減るだろうけど

903 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:32:37.88 ID:3OIdnfKh.net]
値域: 出力される値の範囲
周期: そのまんま乱数の出力が1周するステップ数

内部状態かなんかとごちゃ混ぜになってない?

904 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 18:34:40.46 ID:nD0XyBZB.net]
>>889
内部状態と結果を分離する方式だって当然あるよ。
メルセンヌツイスタのどでかい内部状態を毎回値として利用するわけないし、
乱数として利用できる性質になってない。



905 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:34:49.25 ID:AOBvb97v.net]
さすがにマジの最大値と最小値なんて誰も問題にしとらんやろ

906 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:38:19.35 ID:mUIDTArd.net]
>>892
その思い込みで「値域」と「内部状態の大きさ」をごっちゃにしてるから話がこじれてたんでしょ。
区別して。

907 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:55:00.53 ID:RJAwRgrO.net]
端っこにゴミがあるよりは歯抜けが散らばってる方がいいというのは一理あるね

908 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:33:59.04 ID:14KvXXq2.net]
メンバー関数をテンプレートに出来たりしませんかね?

struct Sample{void func1(int i); void func2(int i);...}
template<typename T> void SampFunc(Sample& sample, int i){sample.T(i);}

みたいな

エラーはNo member named 'T' in ホゲホゲって感じですが

909 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:38:23.09 ID:14KvXXq2.net]
書き込んでから思いつきましたが直接やらずに
struct Caller1{void operator()(Sample& sample, int i){sample.func1(int i);}};
...
みたいなのを挟むべきですかねぇ

910 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:52:52.11 ID:Z549+Tcq.net]
structの{}内にテンプレートの文全部入れてみ?

911 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:13:25.35 ID:o9A3FVGP.net]
毎回 uniform_int_distribution のインスタンスを一時的に生成しては破壊するのを繰り返すのだけはありえんだろ
無意味なメモリのアロケーションありすぎ

912 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:16:30.38 ID:lu0CYRrt.net]
#include <iostream>
using namespace std;
struct Sample{
void func1(int i) {cout << i << "," << __PRETTY_FUNCTION__ << endl;}
void func2(int i) {cout << i << "," << __PRETTY_FUNCTION__ << endl;}
};
template<typename T> void SampFunc(Sample& sample, int i, T member_func){
(sample.*member_func)(i);
}
int main() {
Sample s;
SampFunc(s, 1, &Sample::func1);
SampFunc(s, 2, &Sample::func2);
return 0;
}

913 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:28:15.31 ID:s3l2ZTMb.net]
doubleとfloatの配列を同じように関数の引数に渡して扱う方法ってありますか?
・処理部が複雑なので引数の型が違う関数2個は作りたくない
・IF関数として両方版を作ってそこから処理部を呼び出すみたいな構造は可能、ただし別型版の実体コピー配列などは作りたくない(配列が巨大な為)

考えてみたのが、
配列の値部分をvoid*配列で指したものと、type_infoを持ったクラスなり構造体なりを用意して、
処理部でtype_infoに応じてvoid*をキャスティング、という方法ですが、
どうにも汚いのでもっと綺麗なやり方あれば教えてください。

914 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:34:29.03 ID:lu0CYRrt.net]
コードがないので0点



915 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:51:48.64 ID:MNwZvUCy.net]
テンプレートでいいだろ

916 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:54:11.63 ID:L8LvhIeL.net]
>>900
ふつーにテンプレートじゃね?
template <typename T> requires std::is_floating_point_v<T>
void func(T&& arg)
{
}

あとanyなんて手もあるけど
void func(std::any arg)
{
if(arg.type() == typeid(double)) { }
if(arg.type() == typeid(float)) { }
}

917 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:57:58.78 ID:81yRYH7R.net]
>>900
template<typename T, size_t size>
void f(T(&a)[size]){
}

918 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 12:04:39.18 ID:Z549+Tcq.net]
>>903に便乗してC++20で以下のような書き方も
#include <concept>
template<std::floating_point T>
void func(T && a){}

919 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 12:12:47.83 ID:L8LvhIeL.net]
>>900
まさかとは思うが
float f[2];
std::fill(std::begin(f), std::end(f), 0);

double d[2];
std::fill(std::begin(d), std::end(d), 0);
こんな基本はわかるんだよな?

920 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 13:46:37.17 ID:nlxkZZlr.net]
>>899
ありがとう、採用します 895

921 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:17:59.24 ID:s3l2ZTMb.net]
ありがとうございます、テンプレート便利ですね。使わせていただきます。900

922 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:33:14.26 ID:HFyH6Ayv.net]
あるクラスのメンバ関数のデフォルト引数を同クラスのメンバ変数にすることって可能でしょうか

923 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:51:26.37 ID:lu0CYRrt.net]
可能

924 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 14:51:35.72 ID:eI8f6/6+.net]
もっとわかりやすく説明して……。



925 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 14:55:09.41 ID:eI8f6/6+.net]
デフォルト引数をデータメンバにするってのは単にデフォルト引数の値をデータメンバに入れるって意味?
↓ こういうの?

struct foo {
int x;
void bar(int y=1) {
x=y;
}
};

こんな単純なことがわからないとも思えんし、なんか隠れた要件がありそうな気がするんやが

926 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:03:33.70 ID:JdXPqUHi.net]
>>912
逆だろ文網

927 名前:デフォルトの名無しさん [2022/02/14(月) 15:13:09.50 ID:9KgBPGkB.net]
>>912
こいつJ民だったの?

928 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:13:51.43 ID:M1yCctPq.net]
たぶん
struct S{
int field;
void f(int x=field){...}
};
ってのをやりたいんだろうけどな

あいにくC++のデフォルト引数は関数定義を見ただけで定数に決まるものしか受け付けられない

どうしても同等の処理をしたいならオーバーロードして転送するのが一番楽
void f(){f(field);}

929 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:17:25.95 ID:L8LvhIeL.net]
> デフォルト引数は関数定義を見ただけで定数に決まるものしか受け付けられない

そうか?
int func()
{
int a;
std::cin >> a; //絶対に定数になり得ない
return a;
}

void test(int arg = func())
{
}

int main()
{
test(); //OK. もちろん入力待ちをする
}

930 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 15:21:08.20 ID:eI8f6/6+.net]
>>915
デフォルト引数は関数を呼び出すときに補われたかのように動作する。
関数呼出しのたびに評価されるよ。

931 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:33:51.02 ID:lu0CYRrt.net]
コードがないし状況不明で困ってる文面にも見えないからアレで十分

932 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 17:52:44.50 ID:m3z01MvF.net]
uniform_int_distributionって本質はIntTypeのペアを持った関数オブジェクトだから毎回生成したところで遅くはないはず

933 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 20:03:27.39 ID:vE8mmwyH.net]
乱数ってだいたい静的になんか持ってるよね

934 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 20:44:52.17 ID:UkhMLhRO.net]
マルチスレッド環境用にジャンプって機能が疑似乱数にあるよな
「疑似乱数 ジャンプ」でぐぐると出てくる



935 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 21:33:11.13 ID:CqI2HZWm.net]
状態持ってるのはエンジンの方
分布ごときにどんな怪獣ブラックボックスのイメージ持ってんだ

936 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 21:37:34.26 ID:zjXK/l5x.net]
エンジン以外に何があんの?

937 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 22:08:14.48 ID:2E5iBc/D.net]
例外処理で、catchした後、どのクラスがthrowしたのかってわかりますか?

938 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 22:35:41.44 ID:jOONNl+N.net]
初心者質問ですみません。
ヘッダで定義したテンプレート特殊化の非推奨属性がヘッダ外で効いてないっぽいんですけど、
ヘッダ外でも非推奨としたい場合何か特殊な事をしないといけないとかありましたっけ?

例えば
.h
```
template <std::integral INT_TYPE>
struct int_auto
{
using type = auto_int_detail<std::is_signed_v<INT_TYPE>, sizeof(INT_TYPE)>::type;
};

template <>
struct [[deprecated("char type is not allowed")]] int_auto<char>
{
using type = auto_int_detail<std::is_signed_v<char>, sizeof(char)>::type;
};

template <std::integral T>
using int_auto_t = int_auto<T>::type;

int_auto_t<char> i_header; // これは非推奨
```

.cpp
```
int_auto_t<char> i_cpp; // これは非推奨じゃない
```


939 名前:ネっています。
MSVC++(v142)で言語標準準拠はstd:c++20です。
[]
[ここ壊れてます]

940 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 22:41:31.68 ID:eI8f6/6+.net]
>>924
それ自体には発生元を特定する情報を持たないけど……。
どういう状況?

・ 例外的な状況から回復する必要があって発生源によって処理の切り替えが要る
・ プログラムの正常系が動くはずなのに何故か出てくる例外の元を特定したい (つまりデバッグ用途)

どちら?

941 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:02:44.91 ID:2E5iBc/D.net]
>>926
大学でこういう課題を出されたのですが、全然いい方法がわからないです。
「あるクラスの例外だけをレポートするためにはどのような実装方法があるか」

942 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:08:22.30 ID:BDOt87Dq.net]
>>927
ヒント。例外はクラス等なんでも投げられる。そしてクラスは継承できる。

943 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:11:22.86 ID:R5SapkSQ.net]
それはどのクラスがthrowした、じゃなくて、どのクラスがthrowされた、の間違いだな

例外 c++で検索すれば答えはすぐ出てくるよ

944 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:29:00.15 ID:a+DIA8ij.net]
>>916
>>917
嘘やんと思って試してみたらマジでいけるやんけ知らんかった

インスタンスフィールドまでは触れんかったが



945 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 00:14:19.75 ID:VnfLS+lO.net]
>>928
なるほど。std::exceptionを継承した自作クラスを定義して、
それを投げるというこですね?

946 名前:蟻人間 mailto:sage [2022/02/15(火) 00:23:09.85 ID:vbEMbnXt.net]
throw this;

947 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:33:45.24 ID:StNRh9X/.net]
クラスメンバをforで回す方法はありますか?

例えばintのaとdoubleのbという2つのメンバを持つクラスがあったとして、
forループでクラス内のメンバ変数を全部加算したい、など。

イメージはこんな感じです。
double all = 0.0;
for (T member : this->allMember)
{
all += member;
}

948 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:55:33.51 ID:aaenmMxg.net]
for で回さないといけないほど多数のメンバー変数がある設計をまず見直すべき

949 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:59:14.95 ID:0rNaChGh.net]
リフレクションは無いというのが回答か

950 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:15:26.06 ID:AWN50YIA.net]
動的にロードするのでなければ、自分で登録するか、ソースから解析するタイプのリフレクションライブラリを書くか探せばいい

951 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:16:41.63 ID:g9Gn9R1H.net]
配列じゃあかんのか

952 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:22:08.66 ID:3zKYAjvH.net]
数学のベクトルクラスでも作成してるのかい?

953 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:13:44.36 ID:QbgtcDS7.net]
>>933
あるよ。おすすめするわけじゃないけど。
https://www.google.com/search?q=boost+fusion+for_each+struct

こんな奇怪なライブラリ使わなくても済むようにするための言語側サポートはいずれも提案中。先は長い。
P1306 Expansion statements
https://github.com/cplusplus/papers/issues/156
P1240 Scalable Reflection in C++
https://github.com/cplusplus/papers/issues/545

954 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:28:44.20 ID:AWN50YIA.net]
じゃあこれもオススメではないがリフレクションベースで
https://www.rttr.org/
を使った例でも...
#include <iostream>
#include <rttr/registration>
using namespace rttr;
struct s{
int m1;
double m2;
};
RTTR_REGISTRATION {
registration::class_<s>("s").constructor<>()
.property("m1", &s::m1)
.property("m2", &s::m2);
}
template<typename T>
double sum(const T& o) {
type t = type::get<s>();
double sum = 0.;
for (auto& prop : t.get_properties()) {
sum += prop.get_value(o).to_double();
}
return sum;
}
int main() {
s o{1,1.1};
std::cout << sum(o) << std::endl;
return 0;
}
// 思いつきで聞いてるだけな気もするけどw



955 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:31:44.80 ID:AWN50YIA.net]
ちょっと修正
#include <iostream>
#include <rttr/registration>
using namespace rttr;
struct s{
int m1;
double m2;
};
RTTR_REGISTRATION {
registration::class_<s>("s").constructor<>()
.property("m1", &s::m1)
.property("m2", &s::m2);
}
template<typename T>
double sum(const T& o) {
double sum = 0.;
for (auto& prop : type::get<T>().get_properties()) {
sum += prop.get_value(o).to_double();
}
return sum;
}
int main() {
s o{1,1.1};
std::cout << sum(o) << std::endl;
return 0;
}

956 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 18:59:32.62 ID:bHlhY+TU.net]
std::unique_ptr</*見切れる程長いクラス名*/> looongPtr{ std::make_unique</*見切れる程長いクラス名*/>(/*見切れる程多い引数*/) };
unique_ptrをメンバ変数にするときに最初のとこをautoに出来ないんですか?

957 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 19:17:57.96 ID:9tUnWmYs.net]
make関数使えば?

958 名前:蟻人間 mailto:sage [2022/02/17(木) 19:30:29.28 ID:sNGWbyyl.net]
typedef longlonglongtypename shorttypename;
auto ptr = std::make_unique<shorttypename>...

959 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 20:09:06.95 ID:TNf7BdQD.net]
>>942
できないですね。
https://cor3ntin.github.io/posts/auto_nsdmi/#so-why-are-auto-nsdmi-not-in-the-standard

960 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 20:26:37.89 ID:wIu//gsc.net]
>>942
設計を見直せ

961 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 21:57:39.99 ID:d4bhbZak.net]
単なる○○できますか?に対して設計見直せとだけ言ってくるガイジなんなん
まず質問に答えた上でなら分からんでもないが

962 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 22:12:03.03 ID:wIu//gsc.net]
うるせぇ雑魚が

963 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 23:04:10.74 ID:wrwPyddf.net]
ざーこざーこw

964 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 23:56:12.71 ID:bHlhY+TU.net]
🤔



965 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:20:49.11 ID:q/M7jrOo.net]
C++の業務ってことで入ったんだけどC++とは名ばかりのC言語バリバリのコードだった
C++11、いやせめてCじゃなくてC++を書こうとしようぜと思うんだけど世の中こんなんばっかなん?こういうケースほんっとに多くてさぁ
40代↑の人が書いてるC++の言語って大体ほぼCでうんざりする

966 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:25:14.77 ID:qZSzRw8s.net]
偏見だけど同名の関数が並んでる以外Cとしてコンパイルできそうなイメージある

967 名前:はちみつ餃子 mailto:sage [2022/02/18(金) 00:25:30.70 ID:fowo2HBL.net]
>>951
なんでそんなことになるんだろうな?
コンパイラを信用してないからか?
ワイは40代以上やけど C++ を使える状況であえて C 的なスタイルで書く気はしないわ。
だって単純に面倒くさいもの。

968 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:26:19.39 ID:VWFgwWIW.net]
で、相談は?

969 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 01:20:21.17 ID:x3azmRP7.net]
Cの文法が覚えられる限界なんでしょうな

970 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 02:48:20.56 ID:y/CjghL0.net]
人事部の人がCとC++の見分けがつかなくて
会計上コンパイラ代に「C++」と書いてあったから
C++で募集かけてたんじゃね?

971 名前:ハノン mailto:sage [2022/02/18(金) 03:23:56.08 ID:AKyBDynF.net]
>>953
C++で通らないCは書きたくない、とは思いますね

972 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 13:34:17.22 ID:NqXxszTV.net]
>>951 ←こういう初心者にじゃあすべて作り直していいよ、と言うと何もできない。

無職の妄想からは何も生まれないのだよ。

973 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 14:23:13.29 ID:y/CjghL0.net]
自分は何かできるとでも言いたげだな
すべて作り直すということがどのくらいの工数かわかってないんだろ

974 名前:デフォルトの名無しさん [2022/02/18(金) 15:06:16.89 ID:tL/18rdC.net]
>>958
俺もそう思う

現場の不平不満ばかりの意識高い系エンジニアさん多いよね
その現場を改善するわけでもなく文句いうだけ
高いスキルあるならそんな現場やめれば?
単価150万超えるようなとこなら周りにも高スキルな人がたくさんいるよ?

現場の文句言うだけの奴は結局その現場がお似合いのレベルなんだよ、っていつも思ってる



975 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:32:05.24 ID:dD/fDJ+w.net]
>>951
普通の職場ならコーディングスタンダードあるから勝手はできないだろ。

コーダーとライブラリアンで許可されている範囲も違うだろうし。

976 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:57:07.65 ID:NqXxszTV.net]
>>955
無職が言いそうなことだ。無能なブロジェクトリーダーはCプロジェクトをあっさりとC++化できる、
存在しないスーパープログラマを探し続けるがそんな奴はどこにもいない。
そんなスーパーPGがいたらATMはバグで止まらない。C++書ける奴はCをバカにしないよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef