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


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

C++相談室 part150



1 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 00:04:33 ID:YFRNwZnv.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part149
https://mevius.5ch.net/test/read.cgi/tech/1581974381/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1556142878/


■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

テンプレここまで

883 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 10:06:29 ID:ihiMo4aq.net]
関数内で宣言した変数を途中でconst化したいときってどうやったらいいですか?
関数というのはこんな感じです

void func() {
int a;

〜aの値を設定する百行くらいの処理〜

〜aを用いたメイン処理。途中で誤ってaを変更しないようにしたい〜
}

aをconstで宣言しておいてaを設定するところはconst_castするというのはやりたくないです。
初期化用関数initializeを作って const int a = initialize(〜); とするしか方法はないですか?
できればそれもしたくないのですが

884 名前:デフォルトの名無しさん [2020/05/11(月) 10:09:55 ID:MhpqGE2N.net]
&a にアクセスする権限を readonly にするとか
環境依存だろうけど

885 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 10:13:30 ID:vLTbwMZ+.net]
>>857
a に設定する値を求める処理を関数化して、その戻り値でconstのaを初期化する。

886 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 10:14:29.69 ID:vLTbwMZ+.net]
あ、したくないって書いてあったね

887 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 10:18:49 ID:m+8/4tPw.net]
>>857
初期化用関数を作るのが嫌な理由は何?
外のスコープに名前を付けて置くのが嫌ということならラムダ式で済むと思うんだけど。

888 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 10:53:26 ID:ihiMo4aq.net]
>>859>>861
関数作るのが嫌なのは、気分ですね。バカバカしい理由ですみません。

関数外に置くのが嫌でラムダ式は多用しているのですが、使うときはある程度まとまった処理をするときなので
初期化程度のことにラムダ式を持ち出すのは大仰な気がしてやりたくありません。
これまた個人的な好みで恐縮ですが。

(ちなみに>>857で挙げた初期化処理が百行くらいというのは大げさで、概ね数行くらいです。)

889 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 11:22:30 ID:rmb+jfMY.net]
どうしてもなら、こうだな
int a_;
//a_で初期化処理をする
int const& a = a_;
//aはconst

890 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 11:26:38 ID:rmb+jfMY.net]
アホらしいけど、こんな手も考えられる
struct sample
{
int a;
void func() {
//初期化処理
std::as_const(*this).func();
}
void func() const {
//aをconst扱い
}
};

891 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 11:30:27 ID:tShYcoYg.net]
後半をlambda化すれば
aをコピーキャプチャしてmutableにしなければconstになる



892 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/05/11(月) 11:37:55 ID:p ]
[ここ壊れてます]

893 名前:GzfxkdL.net mailto: GCC や Clang の拡張を使ってよいならこういう書き方は出来る。

void func() {
const int a = ({int a; a=1; a;}); // ブロック内で初期化処理を書いて値を返す
std::cout << a << std::endl; // メイン処理
}

たぶん >>857 が考えている用途だとこれが一番楽なんじゃなかろうかと思うんだけど、
標準ではないってのはやっぱりネックになってくるな。
[]
[ここ壊れてます]

894 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 11:54:09 ID:WjiQACf7.net]
constウイルスw

895 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 12:17:38.26 ID:oXH9qZIA.net]
ポインタ使えばいいのに
const付きのポインタを宣言だけしといて初期化のスコープ内でアドレス渡せばいい

896 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 12:21:06.88 ID:vUv7mwxB.net]
>>862
RAII教に入信しておとなしく初期化ラムダ関数を使うがよい

897 名前:デフォルトの名無しさん [2020/05/11(月) 14:54:10 ID:NX9zuntd.net]
IT掲示板群 ttp://x0000.net/forum.aspx?id=15

学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

898 名前:デフォルトの名無しさん [2020/05/11(月) 14:54:11 ID:NX9zuntd.net]
IT掲示板群 ttp://x0000.net/forum.aspx?id=15

学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

899 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 14:58:27 ID:vIusnhzf.net]
>>868
なるほど、考えてみれば参照型にすればいいんだ。
int a;
(a に対する初期化処理);

const int &a2 = a;
(a2 を読み取るだけの処理);

900 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 15:01:13 ID:vIusnhzf.net]
変数名として灰化の用にすればわかりやすいかもしれない。
物理学では、a0 は、a の初期値を意味することが多いので、学術的にも分かり易い。

int a0;
(a0 に対する初期化処理);

const int &a = a0;
(a を読み取るだけの処理);

901 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 15:02:26 ID:rdm6Cg4w.net]
>>873
誤: 変数名として灰化の用にすればわかりやすいかもしれない。
正: 変数名としては、以下のようにすれば分かり易いかも知れない。



902 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 15:28:25 ID:ZT/W926b.net]
a0がスコープから消えないのは片手落ち
どのみちトリッキーなことして読み手を混乱させることしない方がいい
単純にスコープを一画面に収まるぐらいに短くしろ

903 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 15:33:11.51 ID:rmb+jfMY.net]
キモい個人サイトの宣伝をNG登録っと

904 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 16:16:12.98 ID:rdm6Cg4w.net]
>>875
>a0がスコープから消えないのは片手落ち
言われてみれば。

905 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 16:35:15 ID:gZOsi0FN.net]
処理を途中で止めて、変数とかvectorの中身を確認したりするソフト知らない?

906 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 16:37:43 ID:rdm6Cg4w.net]
>>875
以下のようにすればその問題も一応は解決する。

int a;
(a に対する初期化処理);

{
 const int &a0 = a;
 const int &a = a0;  // 外の a とは別の a を宣言。
 (a を読み取るだけの処理);
}

さらに
#define XXX(_x_) const int &_x_##0 = _x_; const int &_x_ = _x_##0
というマクロを導入すれば、

int a;
(a に対する初期化処理);

{
 XXX(a);
 (a を読み取るだけの処理);
}

でいける。

907 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 16:38:36 ID:rdm6Cg4w.net]
>>878
それがデバッガー。
IDEの中に入ってる。

908 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 16:59:50 ID:rmb+jfMY.net]
>>878
Visual Studioに標準で入ってるよ

909 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 17:54:34.39 ID:ihiMo4aq.net]
やはり大人しく初期化関数使います
いろいろとアドバイスありがとうございました

910 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 18:09:25.84 ID:UkUll7O4.net]
幅優先探索において座標によって侵入コストが均一でない場合に対応するためにプライオリティキューを用いて、
スタート地点からの総移動コスト値(int)を格納する2次元配列と、
それに対応するインデックスとなる座標を格納する構造体(POINT)で実装したいのですが、
ProgrammingPlacePlusというサイトのC++編の「標準ライブラリ」の第12章(priority_queue)のサンプルコードに習って、
使用コンテナがvectorの場合はうまくいくのですが、listにするとコンパイルエラーになってしまいます

int move_cost[256][256];

bool operator >( POINT a, POINT b )
{
return ( move_cost[a.y][a.x] > move_cost[b.y][b.x] );
}

//vector版
std::priority_queue< POINT, std::vector<POINT>, std::greater<POINT> > vector_prio_que;

//list版
std::priority_queue< POINT, std::list<POINT>, std::greater<POINT> > list_prio_que;

初心者ですみません
どうすればlistでも動作させられるのかご教示頂けませんでしょうか

911 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 18:20:43.09 ID:rmb+jfMY.net]
>>883
vectorならokでlistはngというと、イテレータの種類じゃね?
vectorはランダムアクセス、listはバイディレクショナルという違いがあって
よく引っかかる要注意箇所だよ



912 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 19:14:29 ID:UkUll7O4.net]
priority_queueの内部使用コンテナとしては、vector、list、dequeは条件を満たしていると書いてあったので、できるはずだと思ったのですが…

priority_queueは、topメンバ関数で最も優先度の高い要素にしかアクセスできず、
自分で書いたソースでは添え字やイテレータによる直接のアクセスは行っていない
(メンバ関数も、.push .pop .top .emptyしか呼び出していない)のですが、
コンパイルエラーの表示では、ご指摘のとおりリバースイテレータがどうのと出ていました

error C2784: 'reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)'
:テンプレート引数を 'const std::reverse_iterator<_RanIt> &'に対して 'std::list<_Ty>::_Iterator<_Secure_validation>' から減少できませんでした
'std::operator -' の宣言を確認してください。

これは内部的にイテレータの操作がされておりそこでエラーになっている感じなのでしょうか?
algorithmやxutilityの該当箇所を見ても難しすぎてわかりませんorz

913 名前:◆QZaw55cn4c mailto:sage [2020/05/11(月) 19:16:21 ID:X9lKtqAV.net]
>>866
例の奴ですね、ならば、ここはラムダ式の出番でしょう、ラムダ式を定義して即評価します
const int a = [](){int a; a = 1; return a; }();

私以外にもこういうのを希望する人がいるということで、安心しました

914 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 19:28:56 ID:VXScjWrk.net]
> priority_queueの内部使用コンテナとしては、vector、list、dequeは条件を満たしていると書いてあったので
それってどこ情報?
軽くググった限りだと、vector、dequeしか出てこないけど

915 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 19:48:22.07 ID:UkUll7O4.net]
Programming Place Plus というサイトで配布されていた オフライン版(2019-07-01更新版)の C++編の「標準ライブラリ」の第12章(priority_queue)に書いてありました

916 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 20:14:46 ID:1e8qKpQP.net]
リファレンスにはvectorとdequeしかないね
https://ja.cppreference.com/w/cpp/container/priority_queue
https://cpprefjp.github.io/reference/queue/priority_queue.html

917 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 20:21:27 ID:UkUll7O4.net]
vectorの部分をdequeに替えたら問題なく動作したので、対応してるのvectorとdequeだけの可能性高そう
できゅーならできる、なんちゃって

918 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 20:42:44 ID:LZ5jZAGa.net]
(デックなんだけど楽しそうだから黙っとこう…)

919 名前:デフォルトの名無しさん [2020/05/11(月) 20:48:20 ID:oppF2e3I.net]
>>888
そのサイトが取り違えている

https://cpprefjp.github.io/reference/queue/queue.html
>要件を満たすものとしては deque と list

queue | Programming Place Plus C++編【標準ライブラリ】 第11章
https://programming-place.net/ppp/contents/cpp/library/011.html
>Container には、vector(第5章) や list(第6章)

***

https://cpprefjp.github.io/reference/queue/priority_queue.html
>要件を満たすものとしてはvectorとdeque

priority_queue | Programming Place Plus C++編【標準ライブラリ】 第12章
https://programming-place.net/ppp/contents/cpp/library/012.html
>Container には、deque(第7章) や list(第6章)

920 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:01:34 ID:UkUll7O4.net]
そこのサイト詳しくわかりやすく解説してくれているから頼りにしていたのですけど、間違いがあるとは残念ですね…
vectorは要素をずらしたりコピーしたりで実行速度が遅そうだと思ってlistを使いたかったのですが、
素人考えでしたかね

921 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:10:39.83 ID:1x7ET1G/.net]
dequeでよくね



922 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:30:43 ID:rmb+jfMY.net]
>>885
difference_typeって書いてあんじゃねえかよ
バイディレクショナルなイテレータは引けねえんだよ
つまりlistは使えねえってこと

923 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:33:07 ID:M5DpbX0A.net]
>>885
std::priority_queue
https://cpprefjp.github.io/reference/queue/priority_queue.html

ここには、vector・dequeがあると書いてある。
list は書いていない

924 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:37:14.43 ID:VXScjWrk.net]
priority_queueって内部実装がヒープみたいだから、
末尾にしか追加削除しないと思われるので、vectorで十分では

925 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:45:02.52 ID:1e8qKpQP.net]
コンセプトがくればこういう悲しい出来事も減るのかな

926 名前:デフォルトの名無しさん [2020/05/11(月) 21:47:53.20 ID:zAHWYKkR.net]
C++って何作れば勉強になるんだろ

927 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:54:43.39 ID:UkUll7O4.net]
縦10マス×横40マスの地図で幅優先探索を100回まわして時間計ったら、
vectorだと989ms
dequeだと904ms
で大差ないかんじでした
デフォルトのままvectorを利用していきたいと思います
アドバイス下さいました熟練者の皆さまありがとうございましたm(_ _)m

928 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 22:38:15 ID:M5DpbX0A.net]
漏れは、2分ヒープを自分で作って、ソートしたりしたけど、

配列の[0]は使わず、[1]から始めると計算が楽なので、
親1, 左右の子は2, 3で、法則は親n, 子2n, 2n+1

コンテナの最後にオブジェクトを追加し、
それが親の数値より小さい場合は、
再帰的に親と交換していく (親子を交換)

再帰的に、親は両方の子以下の数値をもつ。
左右の子(兄弟)の大小関係は考慮しない

配列の先頭要素[1]をPopし、配列の最後の要素を、
[1]に持ってきて、そこから再帰的に、左右の子と比べながら、
子の数値より大きい場合は、入れ替える

ピッコロ大魔王は、これよりもさらに効率的な方法を言ってたけど

このアルゴリズムでは、deque のリンクは不要だろ?
親n, 子2n, 2n+1 で、メモリの場所が分かるのでは?

929 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/05/12(火) 00:41:18 ID:NsC/lgb+.net]
>>886
質問者はこの場面でラムダ式を持ち出したくないと >>862 に書いてある。
どうして文脈を読めんのだ。

930 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 01:32:23 ID:nCmEHjd6.net]
>>901
なるほど、n, 2n, 2n+1 番の要素に格納してゆくかんじですか、素晴らしいアイデアですね
自力での実装がどうしても必要になったら、配列で作るときのヒントにさせていただきますね

>vectorだと989ms
探索1回あたり10msもかかるのはちょっとおかしいだろうと思って見直したら、
ソリューション構成をDebugにして、「デバッグ開始」してるせいでした
ソリューション構成をReleaseにして、「デバッグなしで開始」にしたら、
探索1回あたり0.02ms弱に収まりました(vector使用時)
STLコンテナ使っててデバッグモードだと500倍も遅くなりうるのか…
ちなみにdeque使用時は0.05msでやや遅めだったのでやはりvectorを使う方がよさそう

931 名前:899 mailto:sage [2020/05/12(火) 02:06:26.24 ID:q3FkXSvr.net]
普通の実装では、[0]から始めると、
親0, 左右の子は1, 2で、親1, 左右の子は3, 4で、
親n, 子2n+1, 2n+2、となり複雑

子3なら親は、(3-1)/2 = 1
子4なら親は、(4-1)/2 = 1.5 で、切り捨てて1

>>901
では、配列の[0]は使わない。[1]から始めると計算が楽
親1, 左右の子は2, 3で、親n, 子2n, 2n+1

子2なら親は、2/2 = 1
子3なら親は、3/2 = 1.5 で、切り捨てて1



932 名前:デフォルトの名無しさん [2020/05/12(火) 09:47:29.30 ID:9iboxsgQ.net]
呼び出し履歴で過去の状態に戻れるのは、記録してるからだし。

933 名前:デフォルトの名無しさん [2020/05/12(火) 11:15:54 ID:4WwqN1hQ.net]
dequeue一択

934 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 11:26:05 ID:xLvzOPR4.net]
そういえばdeque使ってよかったって経験ないなぁ

935 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 11:33:14 ID:8l4UOEBM.net]
heap構造ならvectorが速いよね
事前に適切なサイズでreserveしておけば再配置も起きないし

936 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 11:52:31.54 ID:Jgs88fl2.net]
前後にニョキニョキ伸ばすような用途だとdequeが一番よ

937 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 12:41:24.29 ID:ph0RCKO5.net]
複数のソース・ヘッダーファイルのセットから一つの動的dllは作れないのでしょうか?

938 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/05/12(火) 12:45:13 ID:NsC/lgb+.net]
>>910
作れるよ。

939 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 13:34:11.63 ID:ph0RCKO5.net]
>>911
ありがとん
1つのソース・ヘッダーのセットから1つのdllを作るのには成功したのですが、解説サイトも見つからず困っています

940 名前:はちみつ餃子 mailto:sage [2020/05/12(火) 13:43:29.89 ID:NsC/lgb+.net]
>>912
ツールチェインによって手順は違うけど、
ソースファイルがひとつであろうが複数であろうが特別に違うことはしないと思うんだけど。

941 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:09:57 ID:j/0vQ47K.net]
何が困っているのかさっぱりだぜ
リンカでdllにするんだろ
複数のオブジェクトファイルをリンクすることになんの疑問が



942 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:15:34 ID:9Z5koysX.net]
BASICとかやってた部類の人間だとリンクの概念とかわからんかもね

943 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:17:43 ID:9Z5koysX.net]
そういう化石の人がつい最近いじりはじめた可能性もある

944 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/05/12(火) 14:18:45 ID:NsC/lgb+.net]
コマンドラインから使うときでもだいたいコンパイラドライバが
いい感じにやってくれるから細かなことまで意識する機会も
あまり無いしな。

945 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:24:47 ID:9Z5koysX.net]
昔は依存関係調べるメイクファイルビルダーみたいなの使ってたけど
今はそこら辺もコンパイラが全自動で全部やってくれる

946 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:24:51 ID:s06VnCgE.net]
なんかデジャブ…
つい数日前にもまとめてlib化はできるけどdll化できないって質問があったような…

947 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:24:57 ID:SVn+5d28.net]
>>914
おそらく本人は何も分かっていない、何が分かっていないか分からない、書いてあったことを真似るしか出来ない、ということなんだと思う。

948 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:30:14 ID:9Z5koysX.net]
写経から悟りを得るかどうかの瀬戸際という辺りか

949 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 14:32:49 ID:0QBBSU9v.net]
40年前の子供向けBASIC雑誌ですら動的生成を当たり前のようにしてたのになに言ってんだか
C++は何十年遅れてるのってレベル。ゲイツ舐めすぎ。おまえらはジョブス以下。

950 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 15:24:55 ID:j/0vQ47K.net]
プログラムからコンパイラ呼び出して動的ライブラリ作って呼び出せばいいじゃん

951 名前: mailto:sage [2020/05/12(火) 18:31:00.41 ID:cMBaML9B.net]
>>902
初期化時に別に関数やメンバ関数(メソッド)を立てたくない、という >>862 の要望は、かつて私も体感した感覚であり共感を覚えましたので、失礼だとは思いましたが背中を押す意味もこめて敢えてラムダ式を推すことにいたしました



952 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:33:06 ID:zY2j7Z+k.net]
MacだとCMakeが便利だった。

953 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:38:18 ID:HKiNDHJQ.net]
即時実行されるlambdaなんて
文法上殆んどblock変わらん見た目で、
最適化かければ性能上もblockと変わらんだろ

[&]{
}();

954 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:48:18.72 ID:Jgs88fl2.net]
即実行ラムダのインライン展開って本当にやってくれるの?
もちろんプログラマとしては期待するところだけど本当に主要コンパイラがやってるか誰か検証してる?

955 名前:デフォルトの名無しさん [2020/05/12(火) 20:13:21 ID:Qfzty+97.net]
一回しか呼ばれないんならインラインも糞も無い罠

956 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 20:26:40 ID:HKiNDHJQ.net]
>>927
そんなのアセンブリ出力するかobjdumpすりゃ確認できるだろ

msvcですらやっているよ

957 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 20:28:32 ID:u3gpKmNT.net]
普通の関数コールだって呼び元が1箇所ならインライン展開する

958 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 20:38:00.80 ID:Jgs88fl2.net]
そっかMSVCがやってるなら当然みんなやってるわな
サンクス

959 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 20:38:53.13 ID:u3gpKmNT.net]
いやそんな事もないけど

960 名前: mailto:sage [2020/05/12(火) 20:40:27.49 ID:cMBaML9B.net]
>>926
式しかかけない場所というのがあって、そういう場所では文では駄目ですね

961 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 21:12:01 ID:sL+fzMl7.net]
set::insert()で警告が出るんですが、なんででしょう?vc2015です。

std::set<int> items;
items.insert(1); // ここで警告 C4800

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\utility(175): warning C4800: 'int': ブール値を 'true' または 'false' に強制的に設定します
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xtree(1823): note: コンパイル対象の関数 テンプレート インスタンス化 'std::pair<std::_Tree_const_iterator<・・・



962 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 21:13:55 ID:u3gpKmNT.net]
書いてある通りじゃね?

963 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 22:10:57.80 ID:sL+fzMl7.net]
>>935
メッセージ内容見ても全然意味がわからないです・・・
警告出ないようにするには、どう修正したらいいですか?
#pragma warning とかでなくて

964 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 22:13:18.80 ID:8l4UOEBM.net]
コンパイラを代える

965 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 03:55:06.92 ID:FY0MfQzC.net]
std::set<int> items;
items.insert((int)1); //明示的キャスト

966 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 03:57:56.39 ID:4cp2IEvR.net]
なんでintのコンテナにint突っ込もうとしたら型警告出るんだろうな?
やっぱMSVCってクソだわ

967 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 06:13:43.32 ID:k7uwq6xu.net]
std::set::inster() の引数でbool型が優先されるのか。
どういうオーバーロードが作用してるんだろう。

968 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 06:24:21.32 ID:nnLD0aa0.net]
>>931
頭悪すぎw

969 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 06:25:48.91 ID:nnLD0aa0.net]
>>939
おまえがウジ虫だからだよw

970 名前:938 mailto:sage [2020/05/13(水) 08:02:38.51 ID:k7uwq6xu.net]
誤; std::set::inster()
正: std::set::insert()

1文字での入れ替わりは珍しくないけど、2字ずれちゃったのは何故だ?

971 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 08:08:13.33 ID:OofdoMNm.net]
両手でタイプしているとタイミングのずれでそうなることがある



972 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 08:09:03.26 ID:OofdoMNm.net]
しかしs, e, r, tすべて左手だな

973 名前:デフォルトの名無しさん [2020/05/13(水) 09:04:32 ID:JcjM8CgX.net]
ドッペルゲンガーだろね。

974 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 11:24:17 ID:FY0MfQzC.net]
即席打法inster

975 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 12:06:10.95 ID:xXY8eqGW.net]
>>924
自分も同じです
複数の変数の同時初期化が必要な場合も、前はタプルを返してたけど
c++17の構造化束縛のおかげでずいぶんスマートに書けるようになったと思う
こんな感じで
int i = 2;
int j = 3;
const auto [m, n] = [&](){ return make_tup

976 名前:le(i + j, i - j); }();

make_tupleの代わりにforward_as_tupleを使うと推論がうまくいかないことがあるけどラムダ式だからそんなもんかな
[]
[ここ壊れてます]

977 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 12:16:08 ID:VSt/R8YQ.net]
Set
https://cpprefjp.github.io/reference/set/set.html

コメントに、こう書いてあるけど、
// C++17から

978 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 13:45:03.91 ID:OofdoMNm.net]
C++17が現行規格で、C++14以前は廃止規格
ただし国内ではC++03が現行規格

979 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 13:48:57.81 ID:hlRp6n7l.net]
妙な理解してるな

980 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 18:26:46 ID:4cp2IEvR.net]
合ってるでしょ
JISの最新C++規格はC++03相当の翻訳(誤字誤訳脱文多数)で、今もそれが日本国内の正式な規格
従うメリットはないです

981 名前:はちみつ餃子 mailto:sage [2020/05/13(水) 20:14:04.10 ID:/XT35uGg.net]
ISO は国際的な性格をもつ機関で JIS は日本の機関だけど、
ISO の規格の全てが全世界で通用するわけではないし、
JIS 規格が日本国内だけの効力というわけでもない。
法律に反しない範囲で当事者の合意があればどんな規格だって有効だよ。
規格化活動の便宜のためにそれぞれが独立して活動してるだけなんで、
「JIS は」ならともかく「国内では」みたいな理解は誤り。

あと、「改正前」と「廃止」は別物。



982 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 21:36:34.19 ID:OofdoMNm.net]
よっぽど決まりを守りたくないんだね
そういう人を説得しようとは思わない

983 名前: mailto:sage [2020/05/13(水) 21:44:06.78 ID:k/cJlRBb.net]
>>954
例えば、JIS が C++03 までしかない、からといって国内では C++11 or later が無効、というわけではないと思います
また「C++14 は廃止された」という言い方はそもそも変です
現時点で C++14 で記述するという「決まり」を立てて C++14 でソフトウェアを作成するとどんな問題が発生するのですか?

あなたのいう「決まり」とはなんですか?

984 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 22:04:10 ID:KT7abTkK.net]
>>954
なんだこのバカ

985 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 22:28:38.42 ID:NqwOCnph.net]
C++03でもC++11でも何でも良い
空気を読んでコードが書ければ

組み込みだといまだにC++03の環境も多くあるから
C++03だけでも書けた方が良いし
C++14の機能を使ったコードが読めないのもマズい

986 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 22:31:02.14 ID:NqwOCnph.net]
#defineで動いていて評価も終わってるコードを
わざわざconstexprやインライン関数に書き換えるようなアホな事はするなよ

987 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 22:56:06 ID:FY0MfQzC.net]
constexprはそんなバカコード修正するために在るものじゃないし

988 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 23:33:51.70 ID:RlNw0pdB.net]
壊れていなくても直す…!

989 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 23:39:11.22 ID:FY0MfQzC.net]
カチャカチャやらなくてもそのうちバカコードをAIが直す時代がくるさ
シンギュラリティは近い

990 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 23:52:49.48 ID:j5LG6G0L.net]
constexprは既存コードを壊すために在る

991 名前:デフォルトの名無しさん mailto:sage [2020/05/13(水) 23:59:58.84 ID:GrmX4NGu.net]
constexpr大好き



992 名前:デフォルトの名無しさん mailto:age [2020/05/14(木) 00:50:00.59 ID:9MnQCjc/.net]
コンスとエクスパ

993 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 02:04:29.95 ID:pTsZ6lRN.net]
#define N 100
#define square(x) ((x)*(x))
// 気持ちわる

994 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 05:49:32 ID:IJMYY156.net]
>>957
プロの現場ではC++03以降が敬遠されてるところをみると、
その空気とはC++は便利なCとでしか使ってはならないということだな。

多くはJava、C#、Python、rubyで十分だし。

995 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 07:15:55.89 ID:Qhhsb9+b.net]
C++17には待ってました

996 名前:ニいう有り難い機能が色々あるのに
付いて来れない低脳に迎合するために使用禁止とか愚の骨頂だ
足引っ張るなぼけ
[]
[ここ壊れてます]

997 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 07:16:46.37 ID:Qhhsb9+b.net]
不勉強は罪だぞ技術職では

998 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:03:23 ID:IJMYY156.net]
>>967
冗談はよし子さんw 待ってましたって自分で実装せずに待ってたの? ただの低スキルプログラマじゃんw
C++はいつも十年遅れて標準化するから使われない機能満載だよ。

stringが必要とされたのはいつですか? 実行時型情報が必要とされたのはいつですか? マルチスレッドが使われるようになったのはいつですか?

キミは30年遅れてるんだよ。時代錯誤君。だから糞遅いJavaに簡単にシェア抜かれるんだよ。

999 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:14:52 ID:Qhhsb9+b.net]
構造化バインディングなんか自分で実装できるわけねえだろアホ
何も知らないやつが頓珍漢なこと言ってんな

1000 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:17:40 ID:Qhhsb9+b.net]
それでプロとは笑わせるぜ

まあ、いるけどねHDDを指さしてメモリと言ったり
MTTR/MTBFを知らない「プロ」も世の中には

1001 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:18:39 ID:jtTfGo9Q.net]
Javaって言うほど遅いか
競プロに最適化問題を競って解く分野があるが、Java使いで世界トップクラスの選手複数いる



1002 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 08:25:55.19 ID:IJMYY156.net]
>>970
まずは構造化バインディングの話をしようか。
キミはいつ頃この機能が必要になったのか、何の実装に必要になったのか詳しく聞かせてくれ。

そしてこの機能で今までどういった素晴らしいソフトを作ってきたのか紹介してくれ。
キミほどの優秀な技術者なら著名なプロジェクトを多数参加しているだろうしな。

1003 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:42:44 ID:Qhhsb9+b.net]
>>973
おまえなんかにタダでレクチャーなんかしねえし
身バレするような情報を出すわけねえだろ

おまえ頭がパーだな

1004 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 08:47:57 ID:IJMYY156.net]
答えれないと知ってて質問してるからいいよ。キミはコードを書かない側の人だからね。
プロジェクトでコード書く人は絶対にこんなこと言わない。こういうことはコードを書かない素人が言うこと。

> 有り難い機能が色々あるのに付いて来れない低脳に迎合するために使用禁止とか愚の骨頂だ
> 足引っ張るなぼけ
> 足引っ張るなぼけ
> 足引っ張るなぼけ

1005 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 09:11:55 ID:nTyJBG5I.net]
キモいのが湧いてるwwww

1006 名前:デフォルトの名無しさん [2020/05/14(Thu) 09:19:04 ID:QxbT6fEj.net]
>>969
よしこさんって書き込みたまに見かけるけど、なんで芳江さんじゃだめなん??

1007 名前:デフォルトの名無しさん [2020/05/14(Thu) 09:23:11 ID:QxbT6fEj.net]
>>972
遅くないよ。
C++の20倍速いってブログもあったよ。

1008 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 09:27:45.71 ID:IJMYY156.net]
構造化バインディングの話をしたいのに誰もそっちには乗ってこないんだなw

一体誰がこんな機能待ってたんだろう 言い出した本人は逃げちゃったし

1009 名前:デフォルトの名無しさん [2020/05/14(木) 09:30:38.54 ID:QxbT6fEj.net]
>>979
別に話し合うことも無いと思うけど、何を話し合うの?

1010 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 10:34:07 ID:Qhhsb9+b.net]
>>975
本当に何も知らねえやつだな

> 絶対にこんなこと言わない

目の前に当てはまらない者がいて
言う前から論破されている戯れ言だぜ

1011 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 10:50:24 ID:T9ir0BrB.net]
>>966
逆じゃね



1012 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 10:53:24.55 ID:T9ir0BrB.net]
構造化バインディングは多値返す関数の使う側が楽になる
mapのループ記述も楽

1013 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 11:16:27 ID:X1Z5LMNW.net]
>>981
お前いつもの煽るしか能のないアホだろw
いいから>>973に答えられる範囲で答えてやれよ

1014 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 11:18:07 ID:X1Z5LMNW.net]
ていうかプロを騙って何か良い事でもあんのかね
よっぼどアマチュアであることに強いコンプがあるんだろうな

1015 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 11:36:20 ID:8Z2Ww5c+.net]
最新の言語機能使う俺すげー

大人になろうぜおっさん

1016 名前:843 mailto:sage [2020/05/14(Thu) 11:46:09 ID:X6Fr6WNg.net]
そもそも>>967が言うありがたい機能って>>969が言う自前で実装してた機能を自分で実装しなくて済むとかより楽に綺麗に書けるってものでしょ
なので>>969のツッコミが意味不明
単に標準化がおせーよって言いたいだけ?

1017 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 11:47:37 ID:4xm+WE1I.net]
03至上主義もどうかと思うけどな
unique_ptrくらい使った方がコード品質も上がるよ

1018 名前:デフォルトの名無しさん [2020/05/14(Thu) 11:48:08 ID:tvxDWcUo.net]
次スレよろ

1019 名前:843 mailto:sage [2020/05/14(Thu) 11:49:30 ID:dNlWUJhr.net]
中身は子供の使える俺すげー君もうざいけど使えないことを言い訳する>>986みたいな老害もそれ以上にうざいわ

1020 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 11:52:25 ID:nTyJBG5I.net]
constでRAIIちゃんとやろうとしたら構造化バインディングはありがたいのだが

1021 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 11:54:33.42 ID:aX0QHk6r.net]
>>989
とりあえず建てといた
C++相談室 part151
https://mevius.5ch.net/test/read.cgi/tech/1589424805/



1022 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 12:19:53.50 ID:Qhhsb9+b.net]
技術職の不勉強は罪だと言っている
居直るやつはクズの中のクズだ

1023 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 13:09:18.91 ID:8Z2Ww5c+.net]
言語の文法の勉強なんで優先度低い
多くの場合大してソフトウェアの品質上がらない
(そもそも定量化できていない、可読性とかいうあいまいな個人の感想だけ)
そんなもんは枯れたころに導入すれば十分

1024 名前:デフォルトの名無しさん mailto:sage [2020/05/14(木) 13:12:11.41 ID:8Z2Ww5c+.net]
↑は仕事で使う場合の話ね
趣味の人はご自由に
実際おれだって個人開発では17使ってる

1025 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 14:19:57 ID:Qhhsb9+b.net]
優先度って、まるで他の勉強に忙しいような言い方だな
こんなところで下らない言い訳ばかりしてるやつが

1026 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:23:11 ID:X1Z5LMNW.net]
いいからC++スゲー=俺スゲーしたいだけの馬鹿は黙ってろ

1027 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:28:43 ID:8Z2Ww5c+.net]
そうだね、忙しいね
computer vision系やってるから日々数学の勉強でいっぱいいっぱいだよ
c++の学習は特に頭いらないから週末気分転換にちょっとやる感じ
構造化バインディング使ったところで、認識エラーは1ミリも下がらない

1028 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:29:06 ID:x0qWbzDY.net]
根性で五万行組み上げたみたいなバカコードは嫌い
そんなのは女にもモテない
もっとスマートにこなすべき

1029 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:46:10 ID:Qhhsb9+b.net]
見え透いた嘘ぬかすな
週末気分転換にちょっとやってりゃ
未だにC++03にしがみついているわけがない
もし本当にそうならC++には絶望的に向かないバカだ

1030 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:47:05 ID:Qhhsb9+b.net]
C++11から何年経ったと思ってるんだ
週末は年に52回もあるんだぞ

1031 名前:デフォルトの名無しさん mailto:sage [2020/05/14(Thu) 15:51:59 ID:X1Z5LMNW.net]
ん?
>未だにC++03にしがみついているわけがない
>>995で17使ってると言ってたようだが

てかもうちょい生産的な話出来んのか
仕事でも趣味でも都合の良いコンパイラ使えばいいだけの話
構造化束縛をマクロとテンプレートで実現するとかなら面白い話題なんだけどな(面白いだけで実用性があるとは言ってない



1032 名前:1001 [Over 1000 Thread .net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 51日 15時間 47分 26秒

1033 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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