C++相談室 part125at TECH
C++相談室 part125 - 暇つぶし2ch2:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1)
16/05/21 01:21:51.01 HBQ7d37R0.net
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけ


3:どこれってどうすればいいの? #include <stdafx.h> 後死ね。 言葉が悪いな。それで教えているつもりか。 まぁヒントぐらいにはなったな。 うむごくろう。 ---- テンプレ ここまで ----



4:デフォルトの名無しさん (フォンフォン FF7c-9i5Z)
16/05/21 11:09:02.64 pd6ZdHYkF.net
日本マイクロソフト人事本部シニアマネージャー(名ばかり管理職)の西川昌邦(さいかわまさくに)は犯罪者にして殺人犯だ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!! その結果人が死んだ!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。命が惜しければ間違った判断をなされないことを期待します」
と発言するのと同じレベルだ!!
しかもそれを注意してやったら、「世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
メール:masaikaw●microsoft.com
(●を@に置き換えて)
電話:09025411718

5:デフォルトの名無しさん (ワッチョイ a759-MTTD)
16/05/21 14:12:20.59 af3CQIfx0.net
>>1

6:デフォルトの名無しさん (ワッチョイ d379-xKv1)
16/05/21 14:28:18.44 KTXVvqTh0.net
URLリンク(ideone.com)
このコードをMS C++ Expressでデバッグなしで実行しようとすると
エラーが出ます
しかしこのサイトでは実行できています
なぜですか?

7:デフォルトの名無しさん (ワッチョイ 3e02-MTTD)
16/05/21 14:31:04.40 lmvB7ZQU0.net
>>5
どんなエラーがいつでるの?

8:デフォルトの名無しさん (ワッチョイ d379-xKv1)
16/05/21 14:32:44.82 KTXVvqTh0.net
上のサイトではしっかり実行できてるのに
ソフトでは
構文エラー : ',' が ':' の前にありません。
1>c:\users\user\documents\visual studio 2008\projects\test\sample.cpp(18) :
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既
定値としてサポートしていません
1>c:\users\user\documents\visual studio 2008\projects\test\sample.cpp(18) :
error C2530: 'pair' : 参照が初期化されずに宣言されています。
1>c:\users\user\documents\visual studio 2008\projects\test\sample.cpp(18)
: error C2143: 構文エラー : ';' が '{' の前にありません。
など無数のエラーが出て実行できない

9:デフォルトの名無しさん (ワッチョイ bd6c-WkY+)
16/05/21 14:37:08.53 nQ1EVjn10.net
VS2008でautoサポートしてない?

10:デフォルトの名無しさん (ワッチョイ 7bf8-xFql)
16/05/21 14:37:32.23 4qmWB+Wj0.net
>>7
Visual Studioだからしょうがない。

11:デフォルトの名無しさん (ワッチョイ e6cc-MTTD)
16/05/21 14:38:08.52 7wY/KmeB0.net
autoとfor(:)が使えるのはC++11から
VS2008では無理

12:デフォルトの名無しさん (ワッチョイ 3e02-MTTD)
16/05/21 14:39:28.27 lmvB7ZQU0.net
>>7
エラーメッセージからすると、使っているのはVisual Studio 2008だよね
コンパイラが古いからそのコードで使われている新しいC++の構文をコンパイルできてない
Visual Studio 2015の無償版があるからそれいれなさい

13:デフォルトの名無しさん (ワッチョイ d379-xKv1)
16/05/21 14:39:57.58 KTXVvqTh0.net
じゃあC++11をインスコすれば実行できるんですか?

14:デフォルトの名無しさん (ワッチョイ e6cc-MTTD)
16/05/21 14:41:05.38 7wY/KmeB0.net
VS2013以降で利用可能

15:デフォルトの名無しさん (ワッチョイ d379-xKv1)
16/05/21 14:46:31.23 KTXVvqTh0.net
2015はどこからDLできますか
複雑すぎてわかりません

16:デフォルトの名無しさん (ワッチョイ d379-xKv1)
16/05/21 14:52:36.57 KTXVvqTh0.net
なんかそれっぽいのをクリックしたら8GBもかかるって
出るんですが本当ですか

17:デフォルトの名無しさん (ワッチョイ bd6c-WkY+)
16/05/21 14:55:57.63 nQ1EVjn10.net
おにいさんスレタイよめまちゅか~?

18:デフォルトの名無しさん (ワッチョイ 7182-/fHo)
16/05/21 16:44:04.55 PQEpqFyd0.net
>>14
URLリンク(gist.github.com)

19:デフォルトの名無しさん (スプー Sd28-HoE0)
16/05/23 09:14:59.05 +2REWar9d.net
template< typename T > struct hoge
{
int a;
T val;
};
hoge< std::string > h;
bool b = (void*)&h == (void*)&h.a;
bは常に真になりますか?

20:デフォルトの名無しさん (ワッチョイ d0a8-xKv1)
16/05/23 09:33:27.33 EVT+OYCD0.net
なる。
構造体を指すポインタと構造体の最初の要素のポインタは互換性があることは保証される。

21:デフォルトの名無しさん (ワッチョイ b0cf-G0cz)
16/05/23 10:49:07.22 CGtGrh0g0.net
>>18-19
それが言えるのは standard layout class の場合だけ。 std::string 入れちゃうと保証がなくなる。

22:デフォルトの名無しさん (ワッチョイ 9102-xKv1)
16/05/23 12:14:44.09 DhkHIJPM0.net
何故

23:デフォルトの名無しさん (アウアウ Sab5-MTTD)
16/05/23 12:48:08.66 L1e0GZEGa.net
これだな
9.2.21
A pointer to a standard-layout struct object, suitably converted using a reinterpret_cast, points to its
initial member (or if that member is a bit-field, then to the unit in which it resides) and vice versa. [ Note:
There might therefore be unnamed padding within a standard-layout struct object, but not at its beginning,
as necessary to achieve appropriate alignment. — end note ]

24:デフォルトの名無しさん (ワッチョイ 653c-MTTD)
16/05/23 17:56:00.02 3i62jH+e0.net
>>22
段落ずれてるぞ
前スレ>>769で同じことを書いたような

25:デフォルトの名無しさん (ブーイモ MM31-MTTD)
16/05/24 20:41:37.54 MrSZwiU0M.net
printfの%gに相当する書式はiostreamにはないんですか?
fixedとscientificがあるから当然generalもあるかと思ったらなくて驚きました

26:デフォルトの名無しさん (ワッチョイ e6cc-MTTD)
16/05/24 22:28:01.07 +m15y26g0.net
無いよ
だから流行らないんだけどね

27:デフォルトの名無しさん (ワッチョイ 1c6a-/fHo)
16/05/25 08:34:01.24 58nfhpHt0.net
ないなら作れ、これができるのがiostreamのcstdioより優


28:れているところだ



29:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa)
16/05/25 15:24:00.21 VtVzbof+p.net
utf-8の.txtをifstreamで読み取る方法教えてください
普通にやったら何か文字化けします

30:デフォルトの名無しさん (ワッチョイ 917b-P/BW)
16/05/25 16:09:33.63 gyPde1un0.net
>>27
Windowsか?バイナリーモードで開け

31:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa)
16/05/25 16:14:17.78 VtVzbof+p.net
>>28
ありがとうございます。
ifstream ifs;
ifs.open(”hoge.txt”, ios::binary);
string str;
getline(ifs,str);
cout << str << endl;
でやってみましたが出来ませんでした…文字化けします

32:デフォルトの名無しさん (ワッチョイ 7bf8-xFql)
16/05/25 16:17:16.51 8+OpaV010.net
WindowsのcoutのエンコーディングってUCS2か何かじゃ無かったっけ。
文字コードに互換性が無ければ文字化けする。

33:デフォルトの名無しさん (ワッチョイ bd6c-dqc0)
16/05/25 16:18:50.61 ORzsgYAm0.net
クラスCから次の意味で生成されるクラスDがあります
class D{
C& _c;
public:
D(C& c):_c(c){}
...
}
この時、const Cクラスから単純には生成できません
一般的にはDはCを非constで受け取る必要がありますが
const Dクラスを作る場合Cはconstで受け取る設計にしてOKなのですが
そうしたい場合どう改造するのがスマートですかね?

34:デフォルトの名無しさん (ワッチョイ 917b-P/BW)
16/05/25 16:35:13.19 gyPde1un0.net
>>29
Windowsのコンソールのエンコーディングはロケールによる
日本語設定にしてるならcoutはcp932(shift_jis)かwcoutはUTF16
・実行前にchcp 65001 してUTF-8に変える
・wifstreamに変更して wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));こんな感じでロケール設定してwstrinと wcoutを使う
どっちかで

35:デフォルトの名無しさん (スプー Sd78-MTTD)
16/05/25 17:28:10.96 d1rEd2y1d.net
>>31
日本語がふわふわしてて、なにがしたいのかよくわからん
C c;
D d(c);

const C c;
const D d(c);
の2パターンに対応したいってこと?

36:デフォルトの名無しさん (ワッチョイ 7bf8-xFql)
16/05/25 17:28:40.96 8+OpaV010.net
>>31
DがCを変更しないなら、const修飾子を付けることは出来る。
class D {
const C& _c;
public: D(const C& c) : _c(c) {}
};
CがDに変更されうり、かつ、Cは一度Dを生成したら二度と使われないのであれば、move semanticsを使うことも出来る
class D {
C _c;
public: D(C&& c) : _c(std::move(c)) {}
};
CがDに変更されうる上にCが複数のDを生成するのであれば、CをDのfriendに指定して、Dのprivate constructorをCから呼ぶ事で解決できる
class D;
class C {
std::shared_ptr<C> self;
public:
C() : self(std::shared_ptr<C>(this)) { return; }
D* make_D();
};
class D {
friend C; std::shared_ptr<C> _c;
explicit D(const std::shared_ptr<C>& c) : _c(c) { return; }
};
D* C::make_D() { return new D(self); }
後なんかあったっけ?

37:デフォルトの名無しさん (ワッチョイ bd6c-WkY+)
16/05/25 17:43:13.47 ORzsgYAm0.net
>>33
そういうことです
>>34
ありがとうございます、参考にします

38:デフォルトの名無しさん (スプー Sd28-MTTD)
16/05/25 18:32:28.15 jhIxp3LFd.net
>>31
std::refとstd::crefが違う型を返すことを考えると、
それってあんまり良くないんじゃないかな?

39:デフォルトの名無しさん (ワッチョイ bd7b-MTTD)
16/05/25 19:59:35.92 XGCAXKlf0.net
iterator�


40:ニ同様にconstと非constで型を分けるのが真っ当なやり方じゃね?



41:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/27 22:07:18.88 3bwC+MKv0.net
URLリンク(ideone.com)
これをパソコンで実行できたんですが、コマンドラインに
出た結果をコピペできません、どうすればいいですか
あと、この解の個数を表示するためにどんなコードを
付け加えればいいか教えてください

42:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/27 22:10:51.41 3bwC+MKv0.net
あとこのコードだとnが14以上の時にほとんど解が求まりません
しかし解の最大値と最初値は分かっているのでその範囲内で
探索するようにすれば解は出ると思います
そういう観点からコードを組み直してくれませんか

43:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/27 22:14:03.63 3bwC+MKv0.net
あ、コピペはライン上でできたんでいいです
解の個数以下をお願いします

44:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/27 22:20:15.37 3bwC+MKv0.net
あれ、今度はctrl+Cでコピーできなくなった
どういうことですか

45:デフォルトの名無しさん (ワントンキン MMff-khAS)
16/05/27 23:06:21.15 Hna0N9WzM.net
なにいってだ

46:デフォルトの名無しさん (ワッチョイ e302-kHkB)
16/05/28 02:31:19.15 YovP5ot70.net
分かりません

47:デフォルトの名無しさん (ワッチョイ 9b8c-SNRC)
16/05/28 12:07:56.86 jJTRpnQ60.net
winは初めてか?
範囲選択してenter

48:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/28 19:03:14.41 7/JD/idn0.net
>>39に答えてほしいんですが

49:デフォルトの名無しさん (ワッチョイ 9b8c-SNRC)
16/05/28 19:36:31.48 jJTRpnQ60.net
範囲選択してenterでコピー出来るぞ

50:デフォルトの名無しさん (ワッチョイ b37b-khAS)
16/05/28 20:36:27.79 Y4q1bHMO0.net
一行目をみて一気にやる気が失せた。

51:デフォルトの名無しさん (ワッチョイ e3c9-khAS)
16/05/28 20:37:33.41 Vy3PTpdZ0.net
>>39
回答を列挙する必要がなく、答えの個数だけ求めるのなら、メモ化再帰すればいいのではないかと思う。
何個まで使ったか(iの値)、最後に使ったaiの値、これまでのajの合計を状態として、漸化式をたてる。これまでのajの合計を実数で保持すると誤差死するから、2^nして、整数にすると良い。
外してたらゴメン。
リンク先のコードに、片山さんの名前があるから、ご指名で、質問したらいいのでは?

52:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK7f-Ueuo)
16/05/28 20:49:50.74 BPoJKFOKK.net
>>38
右クリックして範囲選択。
cout << solutions.size() << endl;

53:デフォルトの名無しさん (ワッチョイ 9b79-kHkB)
16/05/28 21:55:21.37 7/JD/idn0.net
>>49
救世主キターーーーーーーーーーーーーー
っていうかこのコードだとn=15くらいで計算不能になるのですが
計算可能なコードって書けないんですか?
1~14の範囲内にあるってことが分かっているのでコンピュータ
に計算させるのが難しいはずがないんですが

54:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK7f-Ueuo)
16/05/28 22:50:05.11 BPoJKFOKK.net
>>50
多倍長計算

55:デフォルトの名無しさん (ワッチョイ 8763-khAS)
16/05/29 07:19:12.33 5/hKFy9c0.net
↑会話の出来ないアスペ

56:デフォルトの名無しさん (アウアウ Sae5-ChPp)
16/06/02 17:00:19.16 +AO86RlVa.net
cとc++って別の言語だってよく言われるんだけど
ネットでc++のソースみるとcの関数が使われてる。
scanfとかprintfとかはc++ではcin、coutにしろって
本にかいてるけど、scanfやらfgets使ってる人多数。
c++=c言語にあった関数+c言語になかった追加関数+オブジェクト指向;
ってことなの?
だからcの関数だってなんだっていいから気にせず使えよってこと?

57:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/02 17:10:23.74 2/ji+i8+d.net
cにあった関数が名前とシグネチャと機能はそのままにc++の関数として提供されている。だから正確にはcの関数ではない。
であってる?

58:デフォルトの名無しさん (ワッチョイ fe9f-py2h)
16/06/02 17:13:14.69 S/TzBOdj0.net
>>53
scanfとかprintfとかはC言語の標準ライブラリの関数だが
良く使われる言語にはC言語で出来たライブラリをバインディングする機能がある
その中でもC++はC言語のライブラリのバインディングが簡単という特徴がある
C言語から着た人は便利だからprintfとかを使ってしまうっということだろう
それらを使かどうかは自由だ

59:デフォルトの名無しさん (ワッチョイ eddc-AjkE)
16/06/02 17:21:54.58 Xtmzf8ox0.net
初心者に読ませる入門レベルでは
型を意識しなくてよいストリームI/O(coutとか)より
型を意識しないといけない入出力関数(printfとか)の方が
説明の流れがスムースになるって理由もあるんじゃないかな。
「CやC++は強く型付けされたプログラム言語」という基本部分。

ストリームが気色悪いと思ってる人が多いだけかもしれないけど。

60:デフォルトの名無しさん (アウアウ Sae5-ChPp)
16/06/02 18:03:57.39 +AO86RlVa.net
ということは、c++で使えるcの関数はc++のものだと考えて
じゃんじゃん使っていいってこと?
いや、なぜこんなこときくのかというと、
fire,15 cold,29 thunder,47
みたいな入力を取得しようとするとき、
人によって、cinとかscanf、fgetsさらに
strtok、sstream、やら方法が一貫してなくて
何が最適なのかわかんなかったんだ。
PHPだと入力はfgetsでtrimしかないからすごくよくわかる
ゲームのマリオみたいにジャンプするならAボタン!
みたいな方法はc++では確立されてないの?

61:デフォルトの名無しさん (ワッチョイ 3f7b-pivs)
16/06/02 18:22:47.09 yckiqRm+0.net
うん。C++はC標準ライブラリを取り込んでいるんだから(C++14 17.2)
じゃんじゃん使ってOK
C++の標準ストリームライブラリはフォーマッティング機能が乏しすぎて
サンプルプログラムを作る分にはまだいいかも知れんが(?)
実業務じゃ使いものにならないケースが多い

62:デフォルトの名無しさん (オッペケ Sr89-ud2d)
16/06/02 18:24:08.96 it0ZbBasr.net
>>55
>scanfとかprintfとかはC言語の標準ライブラリの関数だが
>良く使われる言語にはC言語で出来たライブラリをバインディングする機能がある
Cのライブラリ関数をC++から呼び出す奴は居るし
C標準ライブラリで提供される機能のC++版関数を呼び出すことはよくあるが、
C標準ライブラリの関数をC++から呼び出す奴はかなり変人だ。
素人に変なことを吹き込むな

63:デフォルトの名無しさん (ワッチョイ 9f73-Q64q)
16/06/02 18:25:46.66 C+JTDnqc0.net
基本cでc++の便利機能の利用お勧め
cが便利なアセンブラだから当然言語仕様上の穴がある
c++も同じ様なものなので同じような穴がある
他に関数に渡すパラメーターの並べかたやポインター渡し推奨な場合とか色々
出来の良いライブラリ読んでどの様な作法か勉強するしかない
オレ様流流儀が容易に表現できるけど自分でやった無作法に自分で苦しむのも容易

64:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/02 18:45:01.81 2/ji+i8+d.net
実業務で標準入出力なんて使うの?

65:デフォルトの名無しさん (アウアウ Sae5-ChPp)
16/06/02 19:03:56.48 +AO86RlVa.net
なんかc++の位置づけがわかってきた。
カレーに例えると
cはカレースパイスのみ、ほか食材は作るか調達。
c++は市販のカレー粉とほかの食材。
別にスパイスを使いたかったら使ってもいいけど、
市販のカレー粉使えばいいよ。食材もある程度用意してる。
なければ調達しな。
c#、JAVA、PHP、他スクリプト系は、レトルトカレー。
こんな認識でいい?
まとめると、c++は生の食材を料理するから
腕次第によってまずくも、うまくもなる。
だって、いろいろな道具が用意されてるから。

66:デフォルトの名無しさん (ワッチョイ 3f7b-pivs)
16/06/02 19:25:29.55 yckiqRm+0.net
その手の例えはどうしたって的外れになるから止めておけ。

67:デフォルトの名無しさん (ドコグロ MMf4-ud2d)
16/06/02 19:41:34.04 SGqeHS7dM.net
>>61
実業務って何を指すかによるけど
会社で使うソフトと言う意味なら頻度は少ないけど使ったことはある

68:デフォルトの名無しさん (ワッチョイ 8063-ud2d)
16/06/02 19:46:51.57 icPOSwlV0.net
>>54
CのctanはC++に無いし、strchrやprintfのシグネチャーは同一ではないぞ
>cの関数ではない
ここはあってる

69:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/02 20:17:42.44 2/ji+i8+d.net
>>65
あり

70:デフォルトの名無しさん (オッペケ Sr89-ud2d)
16/06/02 22:17:44.11 n9ndp25+r.net
>>62
お前はウン粉でも食ってろ
>>56
>説明の流れがスムース
お前は昭和からタイムスリップしてきたのかよ

71:デフォルトの名無しさん (ワッチョイ 9d02-ChPp)
16/06/02 22:26:52.45 W/e1Hdca0.net
昭和の言語じゃん

72:デフォルトの名無しさん (ワッチョイ 8063-ud2d)
16/06/02 23:02:00.98 icPOSwlV0.net
CもISO標準化前の時代を含めると昭和だな
文法がキモかったらしいがよく知らない

73:デフォルトの名無しさん (ワッチョイ df42-ChPp)
16/06/02 23:38:27.77 P58iKYFf0.net
昭和の言語って世界に通じる表現なの?

74:デフォルトの名無しさん (ワッチョイ 9d02-ChPp)
16/06/03 00:32:09.44 5+yG3bCV0.net
昭和は日本人しか知らないでしょ

75:デフォルトの名無しさん (ワッチョイ eddc-AjkE)
16/06/03 05:45:31.06 o7VJVlqj0.net
>>67
「説明の流れがスムース」ってレトロ調か。
じゃぁナウい平成の表現ではどうすべきか教えて丁髷。

76:デフォルトの名無しさん (ワッチョイ 96c0-D9Ox)
16/06/03 06:54:26.65 +0Di2rYP0.net
反論してる言葉が昭和で草

77:デフォルトの名無しさん (オッペケ Sr89-ud2d)
16/06/03 08:17:51.99 DSoZZ+3or.net
>>72
スムーズしかないだろ
メロスはプッツンした並の言語センスだな

78:72 (ワッチョイ eddc-AjkE)
16/06/03 12:29:34.36 o7VJVlqj0.net
おお "smooth" の th は有声音で、全体で「スムーズ」に近い発音か。
語尾の th は一般に濁らないものだと思ってたよ。
序数標識の th から類推してね。他にはプログラム言語のFORTHとか。
しかも昔は日本語で「スムース」の表記があったのか。
「昭和の書き方」と言われるのもむべなるかな。
いや、かたじけない。

79:デフォルトの名無しさん (ワッチョイ 59ec-dUIB)
16/06/03 23:07:58.44 VvFq8Qy/0.net
URLリンク(ja.forvo.com)

80:デフォルトの名無しさん (ガックシ 069c-4qA/)
16/06/07 12:23:27.58 7urPq1456.net
時代がさらに戻ってて草

81:デフォルトの名無しさん (ワッチョイ 9d02-ChPp)
16/06/07 19:06:56.90 qUlfbL0p0.net
いまだにラムダ式をそらで書けないんだがどう覚えたらいい?

82:デフォルトの名無しさん (ガラプー KK6d-pkX1)
16/06/07 19:13:41.47 AqghaPJwK.net
>>78
カンニングペーパーでも作ってろ

83:デフォルトの名無しさん (ワッチョイ b2a8-ChPp)
16/06/07 19:47:47.36 PW1KNSvD0.net
堪忍してつかぁさい

84:デフォルトの名無しさん (ワッチョイ 8063-ud2d)
16/06/07 21:02:55.00 25tonARw0.net
見ればすぐわかるものを覚える必要はない

85:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 09:07:52.86 cIBTG1hgd.net
std::sortの比較関数をラムダ式で書いてるプログラム見るけど、あれ何で引数部分に要素が渡されるのか、いまいち理解してない

86:デフォルトの名無しさん (ワンミングク MM40-ud2d)
16/06/08 09:14:34.66 aBxmQ6GCM.net
sortの中でcompareに渡すとき参照を剥がすように実装してるから以外の答えはありうるのか…?

87:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 11:07:13.50 T7O01KYMd.net
>>82→83 の流れが理解できない

88:デフォルトの名無しさん (ワッチョイ fe9f-py2h)
16/06/08 11:37:47.11 2gdEHtFT0.net
引数部分をラムダ関数自体と解釈するか
比較関数に対する引数と解釈するかで食い違ってるからな

89:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 11:56:16.88 T7O01KYMd.net
>>85
>比較関数に対する引数と解釈するか
それってなんすか?

90:デフォルトの名無しさん (ブーイモ MMb8-ud2d)
16/06/08 13:10:05.76 IzbVLKR1M.net
>>84
そもそも>>82は何が不明なのか理解できたのなら教えてくれ

91:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 14:10:25.42 T7O01KYMd.net
>>87
いや俺は>>82>>83>>85が何を言っているのか全くわからない

92:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 14:26:38.03 cIBTG1hgd.net
例えば、std::vector<int>型の配列a[0]~a
[10]までの各要素に、それぞれ1~10が代入されていたとき、
std::sort(a.begin(), a.end(), [](int& a1, int& a2) { return a1 > a2; });
を実行すると降順にソートされる。
このとき、a1とa2に配列内の数値が渡っている理由がよくわからない、という意味です。
初歩的な質問ですがお願いします。

93:デフォルトの名無しさん (スプー Sdc8-ud2d)
16/06/08 14:33:06.87 3qc7Gxwcd.net
なんだよ理由がわからないって

94:デフォルトの名無しさん (ガラプー KK5f-pkX1)
16/06/08 14:38:00.60 NAh8v38DK.net
>>89
テンプレート関数std::sortが呼ぶから。

95:デフォルトの名無しさん (ワッチョイ fc7b-pivs)
16/06/08 14:40:22.22 lMpdbKpY0.net
>>89
std::sortがそういう風に実装されているからだよ
ところで
>配列a[0]~a[10]までの各要素に、それぞれ1~10が代入されていたとき、
a[0]~a[10]の要素数は11あるってことはOK?

96:デフォルトの名無しさん (スプー Sdb8-ud2d)
16/06/08 14:45:41.43 cIBTG1hgd.net
>>91
>>92
そうだったのですか、ありがとうございます。
a[10]はa[9]の間違いでした。申し訳ないです。

97:デフォルトの名無しさん (オッペケ Sr89-ud2d)
16/06/08 18:18:51.66 Ay2NYYowr.net
>>88は健常者
>>92はアスペ

98:デフォルトの名無しさん (ワッチョイ 8063-ud2d)
16/06/08 23:17:00.92 dY3DVg900.net
>>88
83「イテレーターをデリファレンスして要素の左辺値を取り出しているからとしか言いようが無い」
85「『引数部分に要素』の『引数』をラムダ式のコンパレーターと解釈するか、比較関数が受け取る引数と解釈するか」
つまり83と85はアフォ

99:デフォルトの名無しさん (ワッチョイ bb7b-Xj17)
16/06/09 21:39:41.69 9GK5WJKb0.net
c++ってこういうくだらない議論を延々やってる印象。

100:デフォルトの名無しさん (ワッチョイ bb02-7xHu)
16/06/09 21:55:03.39 /Mjso7pS0.net
2chだから

101:デフォルトの名無しさん (アウアウ Sa97-jNGR)
16/06/09 22:02:44.30 W5VdNr2fa.net
他の言語のスレではこんなんないし
c++がややこしいんじゃね

102:デフォルトの名無しさん (ワッチョイ d763-jNGR)
16/06/10 00:14:56.84 ksaxsahD0.net
>配列内の数値が渡っている理由がよくわからない

>そういう風に実装されているからだよ
>何で引数部分に 要 素 が 渡されるのか

>引数部分をラムダ関数自体と解釈するか
>このとき、a1とa2に配列内の数値が渡っている理由がよくわからない

>なんだよ理由がわからないって
言語の問題じゃなくて回答者のオツムに問題が有るのではないか

103:デフォルトの名無しさん (ワッチョイ bb02-7xHu)
16/06/10 00:39:25.40 I1Owsl6u0.net
こういうところが2chが役に立たない理由

104:デフォルトの名無しさん (ワッチョイ bb7b-6mPp)
16/06/10 01:09:42.25 X0D45aWY0.net
どういうところが役に立つの?

105:デフォルトの名無しさん (ワッチョイ fbdc-0TCb)
16/06/10 06:19:15.40 CWxeJNTw0.net
プログラム板の全スレッドを見てるわけではないけど、
C++関連のスレッドは攻撃的な口調の書き込みが多いと感じる。
実務でよほどストレスの溜まる言語なのか、
そういう芸風の有名サイトあたりを模倣しているのか。

106:デフォルトの名無しさん (ワッチョイ eb42-jNGR)
16/06/10 06:30:10.15 w7JbxUjA0.net
厳格でない事を許容できる人しか他の言語を使わないからじゃないの?

107:デフォルトの名無しさん (ワッチョイ 8b3c-drwA)
16/06/10 06:37:36.55 BRIl1zRc0.net
GLRが厳格とな?

108:デフォルトの名無しさん (ワッチョイ 0742-jNGR)
16/06/10 06:41:42.38 7AG0Olzm0.net
2chだからそれが普通だって思いこんでるんだろう。
ところで厳格でない言語ってなによ?

109:デフォルトの名無しさん (ワッチョイ 4fc0-W0AP)
16/06/10 06:57:03.07 gztLLW9m0.net
MSDNのC++フォーラムはMVPの常連も回答もせず質問の仕方が悪いと文句書き込みばかりになってて見るのやめてしまった
久しぶりに見てみたらまだやってた

110:デフォルトの名無しさん (ワッチョイ 8b3c-drwA)
16/06/10 07:00:48.79 BRIl1zRc0.net
逆に厳格な言語として有名だったのはJavaだな。
今でもそうなのかはわからんが。

111:デフォルトの名無しさん (ワッチョイ 8b3c-drwA)
16/06/10 07:01:41.84 BRIl1zRc0.net
さらに厳格なのはXMLだろうな。
プログラミング言語ではないが。

112:デフォルトの名無しさん (ワッチョイ 9f13-Srpw)
16/06/10 07:14:29.29 lJsEyLcp0.net
>>107
PASCAL だね,厳格なのは

113:デフォルトの名無しさん (ワッチョイ bb7b-Xj17)
16/06/10 09:07:17.45 ODD2XRmk0.net
規格はあるけど、実際はコンパイラ依存ってのが現実だからな。

114:デフォルトの名無しさん (ワッチョイ 8b3c-drwA)
16/06/10 09:17:57.24 BRIl1zRc0.net
だがしかし。
C++はヘロモンがある。

115:デフォルトの名無しさん (ワッチョイ bb7b-6mPp)
16/06/10 10:35:55.57 X0D45aWY0.net
他の言語はデファクトスタンダードな実装が一つ存在してそれ以外は亜種みたいなものだからコンパイラ依存とか目立たないだけ

116:デフォルトの名無しさん (ワッチョイ 9f7d-iLHn)
16/06/10 12:39:46.00 yu98+dTQ0.net
>107,109
ALGOL60を忘れてはいませんか

117:デフォルトの名無しさん (アウアウ Sa97-jNGR)
16/06/10 15:26:39.37 rJIdiI/ka.net
c/c++ってパソコンでもスパコンでもマイコンでも普通によく使われるんだよね
そう考えるとすごいな

118:デフォルトの名無しさん (ワッチョイ 9f13-Srpw)
16/06/10 19:28:05.13 lJsEyLcp0.net
fortran には負けるでしょう

119:デフォルトの名無しさん (ワッチョイ 077b-hSzB)
16/06/10 19:36:38.72 nozgnbXX0.net
プッ

120:デフォルトの名無しさん (ワッチョイ bb02-7xHu)
16/06/10 19:37:13.14 I1Owsl6u0.net
老人の研究者しか使ってない

121:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ffa8-7xHu)
16/06/10 23:06:31.17 eGOSJwN50.net
スパコンではまだ Fortran は強いみたい。
並列化で性能が出しやすいって聞くね。

122:デフォルトの名無しさん (ワッチョイ bb91-jNGR)
16/06/10 23:43:29.61 dWFrFI9c0.net
インテル公式コンパイラは、C++とFortran

123:デフォルトの名無しさん (アウアウ Sa97-AHtr)
16/06/11 01:21:59.05 Ga1z+Yika.net
なぜcolumn majorにしなかったのか

124:デフォルトの名無しさん (ワッチョイ 077b-hSzB)
16/06/11 01:45:24.37 hLugldX80.net
頭悪いから

125:デフォルトの名無しさん (ワッチョイ eb4a-W0AP)
16/06/11 05:35:44.69 i2XIvuGx0.net
>>102
有名サイトとはどこ?

126:デフォルトの名無しさん (ワッチョイ bb02-7xHu)
16/06/11 10:47:15.03 LO2ooV2u0.net
>>122
自由ソフトウェア(笑)でググれ

127:デフォルトの名無しさん (ワッチョイ bb7b-Xj17)
16/06/11 12:43:48.69 JwbsVpE70.net
コードをかかないc++er だからなw
あれで普及すると思ってる方がどうかしてるw
結局、言語を普及させるのはスーパーなフレームワークやライブラリの実装だってのに。

128:デフォルトの名無しさん (ワッチョイ 57c9-jNGR)
16/06/11 13:19:22.77 zSGsCTOB0.net
しっ!いま喋ってるから!

129:デフォルトの名無しさん (ワッチョイ cf42-rvcI)
16/06/11 22:44:22.60 scKw0KYu0.net
Smalltalkみたいにか

130:デフォルトの名無しさん (ワッチョイ 503c-4fuR)
16/06/17 06:02:11.26 r/nICHre0.net
質問です
URLリンク(ideone.com)
上記のコードがVC2015でもideoneでも、ちゃんと特殊化バージョンが呼ばれるのですが
Apple LLVM上のコンパイラだと、どちらも非特殊化バージョンしか呼ばれません
(fuga構造体を外に出すとちゃんと特殊化バージョンが呼ばれる)
規格に詳しくないのですが、自分は


131:上記のコードは特殊化バージョンが呼ばれるのが正しいですよね?



132:デフォルトの名無しさん (ワッチョイ 503c-4fuR)
16/06/17 06:03:18.17 r/nICHre0.net
すみません消した文と混ざってしまいましたorz
X自分は上記のコードは特殊化バージョンが呼ばれるのが正しいですよね?
○上記のコードは特殊化バージョンが呼ばれるのが正しいですよね?

133:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/17 07:38:13.23 5HmA4kNf0.net
nullptr_tを特別扱いするというルールは規格に見あたらないな
疲れているんだろうきっと
URLリンク(melpon.org)

134:デフォルトの名無しさん (ワッチョイ 503c-4fuR)
16/06/17 09:03:05.45 r/nICHre0.net
すみません、wandboxなら再現できたんですね
やっぱり汎化バージョンが呼ばれますよね・・・・バグなのかなぁ
まぁ回避できるので実用上は大丈夫なんですが

135:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 00:28:37.00 6+h2eBKY0.net
例外処理というのがいまいちわかりません。
例外が発生する箇所をtry{}で囲い・・・と説明がありますが
そもそも例外が発生するとわかっていれば、それを根絶するように
修正すべきなのでは?と思ってしまいます
どのような局面で有益なのでしょうか?

136:デフォルトの名無しさん (ワッチョイ 300b-qS7w)
16/06/20 00:45:19.22 KuHDgHp40.net
たとえばcのmallocはメモリ確保に失敗するとnullを返すけど
c++のnewはbad_allocを投げるでしょ
なんかの処理に失敗したことを伝えたい時は戻り値でなく例外で伝えた方が失敗への対処を呼び出し元に強いれるからいいんだよ

137:デフォルトの名無しさん (ワッチョイ 300b-qS7w)
16/06/20 00:52:11.12 KuHDgHp40.net
ていうかtryで囲わなければ例外を関数の呼び出し元に伝えられることを理解してないのかな

138:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 01:00:55.02 dcxG8b1i0.net
処理の失敗をif文で判定する代わりに使ってるだけだ

139:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 01:08:00.57 6+h2eBKY0.net
>>133
理解できてないから質問してんだろ
バカですか?

140:デフォルトの名無しさん (アウアウ Sac5-qS7w)
16/06/20 01:26:46.05 RqtufBmpa.net
なんだコイツ…

141:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 01:31:27.40 dcxG8b1i0.net
原理的なところはとりあえずほっておこう
こんな処理があるとする
//成功するか失敗するか分からない処理
if( funcA() ) goto ERROR;
if( funcB() ) goto ERROR;
if( funcC() ) goto ERROR;
正常処理
return 1;
ERRPR:
異常処理
return 0;.
これが
こう書けたらいいだろ
try{
funcA();
funcB();
funcC();
正常処理
}catch(...){
異常処理
return 0;
}

142:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 01:33:39.48 dcxG8b1i0.net
訂正
if( !funcA() ) goto ERROR;
if( !funcB() ) goto ERROR;
if( !funcC() ) goto ERROR;

143:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 02:00:21.02 6+h2eBKY0.net
>>137
tryで書き直したとして、問題は解決しないですよね。
失敗していることを修正すべきでは?

144:デフォルトの名無しさん (ワッチョイ c63c-LK9o)
16/06/20 02:16:46.53 IovGZCSW0.net
メモリ不足とか領域破壊とか、当該コードからじゃ修正のしようがない問題があってね。

145:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 02:20:12.88 dcxG8b1i0.net
>>139
どうやっても成功するか失敗するか分からない処理ってあるだろ?
外部とやり取りするときとか
例えば
とあるファイルを読み込んで処理する関数があるとする
でもそのファイルが無ければ処理は失敗する
ほかにもアクセス制限がかかっていたりファイルの中身が壊れていたりとかね
その場合0を返すか例外を投げて呼び出しもとで対処する
そういった絶対に100%成功する保証が無い処理っていうのはいくらでもある
メモリが断片化しすぎて確保できないとか
外部のサーバとの通信に失敗したとか
ハードが壊れてたとか
プログラム側からはどうしようもないからといっていきなり終わらせるのは間違い、失敗なら失敗なりにちゃんとした手続きをして終わるか処理を続行しなければいけない
例えば信号�


146:@のプログラムだとかは何かエラーが起こったとしてもなにがなんでも動き続けなければいけない その判断をするために例外処理があるわけ



147:デフォルトの名無しさん (オッペケ Sr4d-qS7w)
16/06/20 02:20:13.62 vlE7fe2Fr.net
解決はcatchの中でするんだよ。

148:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/20 02:27:46.60 Nxz2d29B0.net
>>139
解決できるならそうすべきなのは君の言うとうり。
解決できないエラーを扱うから例外なんだよ。
メモリ足りないエラーなんて予測は出来ても解決できないでしょ?

149:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 03:04:40.98 6+h2eBKY0.net
>>143
確保しようとしている量が、空きより多いのに、確保要求を出すことがそもそもの誤りなのでは?

150:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 03:18:17.66 dcxG8b1i0.net
>>144
出さないでどうすんの?
どうやって目的を達成するわけ

151:デフォルトの名無しさん (ワッチョイ 217b-4eJF)
16/06/20 03:18:18.04 ZolMwWER0.net
で、仮に確保前に空き容量を確認するコードを書いたとして足りなかったらあなたはどうするの?

152:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 03:22:07.68 6+h2eBKY0.net
確保要求を出さない

153:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/20 03:23:03.75 Nxz2d29B0.net
>>144
ねえ?
実際プログラムしてみなよ。
自分の言ってる事の、ある種の矛盾に気付くとおもうから。

154:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/20 03:26:46.19 6+h2eBKY0.net
>>148
コーティング前の話をしてるのに・・・
コーティングしてできなかったら、できないって結論なのですか?

155:デフォルトの名無しさん (オッペケ Sr4d-qS7w)
16/06/20 03:50:50.84 vlE7fe2Fr.net
相談(?)内容がずれてる。
Cの戻り値でエラーを返すのと、C++の例外処理で、できることは変わらない。
いちいちifで戻り値を見るのがめんどうだから、throwで例外を投げて、まとめてcatchで受ける。それだけ。嫌ならifで戻り値をチェックすればいいし、エラーが100%おきないコードがかけるなら、エラー処理しなくていい。

156:デフォルトの名無しさん (ワッチョイ 353c-6iFS)
16/06/20 04:01:47.75 FhfmjeRD0.net
殺して奪っても、働いて貯めても、金は金やで。

157:デフォルトの名無しさん (ワッチョイ 353c-6iFS)
16/06/20 04:05:48.22 FhfmjeRD0.net
スレッド間の例外転送について。

158:デフォルトの名無しさん (ワッチョイ 217b-4eJF)
16/06/20 05:12:06.39 ZolMwWER0.net
>>147
出さずにどうすんの?
そこでプログラムは停止するの?

159:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/20 05:20:40.42 tcHwD5YJa.net
・自前の空き確認コードにより要求に足りないことが判明したので確保要求しない
・取り敢えず確保要求して断られた(例外)
両者は事実上同じでは?

160:デフォルトの名無しさん (ワッチョイ 217b-4eJF)
16/06/20 05:37:11.98 ZolMwWER0.net
>>154
厳密には同じじゃないけどな。事前に確認しても実際に要求出すまでの間に他のアプリによって空きが少なくなることもあるわけで

161:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/20 05:46:32.76 tcHwD5YJa.net
なるほど。ではますます例外処理による対応を採った方が正しいわけですね

162:デフォルトの名無しさん (ワッチョイ ab64-4fuR)
16/06/20 05:46:40.79 7Cuehomz0.net
よし、CLIしよう

163:デフォルトの名無しさん (ドコグロ MM5c-qS7w)
16/06/20 07:01:35.38 A8kl/PgBM.net
>>155
> 事前に確認しても実際に要求出すまでの間に他のアプリによって空きが少なくなることもあるわけで
プログラマーなら逆のケースを考えようよ

164:デフォルトの名無しさん (ドコグロ MM5c-qS7w)
16/06/20 07:03:02.99 A8kl/PgBM.net
>>155
すまん寝ぼけてた
>>158 は撤回でお願い

165:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/20 08:23:56.03 Nxz2d29B0.net
>>149
そうじゃなくて、ここまでいろいろな説明されても腑に落ちないなら、実際試して実感してみーや?って事。
百聞は一見にしかずって事。

166:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 08:38:24.54 dcxG8b1i0.net
>>149
そもそも空き容量を調べて確保要求を出さないという判断をすることはエラー処理なんだが
君はおそらく混乱している

167:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 08:46:33.68 Uj3W8dOJ0.net
>>144
そりゃ自プロセスの情報だけで命令の実行結果が予測できない局面が多いからな
オペレーティングシステムの管理下で実行されるプログラムやハードウェアを制御するプログラムなら尚更

168:デフォルトの名無しさん (アウアウ Sac5-qS7w)
16/06/20 09:11:03.03 qnUK8Tcka.net
cでmallocとか使ってればifでいちいち失敗を判定するのがいかに面倒か経験してると思うんだよね
c++に行く前にもっとcを経験すべきなんじゃない

169:デフォルトの名無しさん (ワッチョイ 353c-qS7w)
16/06/20 11:33:59.56 xokQvwUO0.net
C++をやる前にCを学ぶという発想が老害
老人はすぐに自分用の昔の苦労を他人に押しつけたがる

170:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 12:31:29.07 dcxG8b1i0.net
イミフ
より簡単なところからやった方が苦労が少ないだろ

171:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/20 12:35:16.21 jkugRtjka.net
ハハワロス

172:デフォルトの名無しさん (ワッチョイ 8b9b-qS7w)
16/06/20 12:44:59.31 zHRXCVwP0.net
C++の前にCを学ぶってのはいいと思うけど
面倒なのを経験しとけってのは老害の気がする

173:デフォルトの名無しさん (ワッチョイ 0d7b-o3Bz)
16/06/20 12:50:07.90 7O0ObdXP0.net
そんなに面倒だとは思わないけどな

174:デフォルトの名無しさん (ワッチョイ 300b-qS7w)
16/06/20 13:15:41.54 KuHDgHp40.net
>>167
だって質問者がc++追加機能の有用性が分からないから教えてっていうんだもん
少しは経験しないとそりゃ分からんじゃん?

175:デフォルトの名無しさん (ワッチョイ 5c7b-NLZX)
16/06/20 13:30:48.11 3NNTVW740.net
だよね
mallocや*openのエラー処理のクソめんどくささを経験しないと例外の有り難みは分からんな

176:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/20 14:55:54.01 EjDa070W0.net
__try {} finally {} 最強

177:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/20 14:58:03.48 EjDa070W0.net
__try {} catch {} __finally {} 最強ヽ(^。^)丿

178:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 16:48:04.00 Uj3W8dOJ0.net
文盲が多いな。
>>131は「それを根絶するように修正すべきなのでは」と言っているのだから
幾らエラー処理の楽さを説明したところで会話がかみ合っていない。
まず例外が何のための機能なのかを理解させる必要がある

179:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 18:56:59.95 dcxG8b1i0.net
根絶できないということは既に示してあるだろう
それを無視するならもはや学ぶ資格はない

180:デフォルトの名無しさん (ワッチョイ 8317-LYlF)
16/06/20 19:34:32.13 A1k1A+0q0.net
class AAA クラス名 {}
とか見るけどAAAは何を意味しているのですか?
AAAがあるとMINGWとかでDLLを作って利用しようとすると
undefined referenceになってしまうのです

181:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/20 20:05:46.83 dcxG8b1i0.net
何かのマクロ
ヘッダに定義が書かれていないから見つからないと言われている

182:175 (ワッチョイ 8317-LYlF)
16/06/20 20:37:59.87 A1k1A+0q0.net
>>176
レスありがとう。
少し見てみたらただの空defineだった
これがあってもコンパイルは通るしDLLも作れるのだけど
作ったDLLを使ってプログラムをコンパイルしようとするとエラーが出る
この空defineをクラス宣言に組み込む意味がわからないのだけど・・・

183:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK01-H5Or)
16/06/20 20:52:58.62 Iph33/KOK.net
そこには__declspec(dllimport)や__declspec(dllexport)を
指定することがアルネ

184:デフォルトの名無しさん (オッペケ Sr4d-qS7w)
16/06/20 21:52:48.01 mSxk+S8gr.net
1024個のfloat配列を最速で昇順に並べたいのだけどどうしたらいい?

185:デフォルトの名無しさん (ワッチョイ 353c-o3Bz)
16/06/20 21:54:46.94 sBXZNPyY0.net
>>139
Objective-Cがまさにその思想で作られてる。
Objective-Cは例外処理は一応機能としてはあるけど
例外が起きたらクラッシュさせろという思想
(というかObjective-Cの例外処理は
setjmp, longjmpで実装されているので、
例外が起きたらまずメモリリークするため
例外が起きた後実行し続けてはいけない)
まぁJavaなんかはミッションクリティカル
(クラッシュしてはいけない)サービスで
動かすことが多いので例外処理でガチガチに
固めないといけないが
バッファオーバーランが日常茶飯事の
C++で例外処理する意味はあまり無いわな

186:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/20 21:58:57.96 ySgS+Tc+0.net
>>179
とりあえずstd::sort

187:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 22:00:23.20 Uj3W8dOJ0.net
>バッファオーバーランが日常茶飯事の
C++で
個人的の日常をさも普遍的であるかのように語られても

188:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/20 22:01:46.31 sBhXM9Rw0.net
>>179
std::sort(&flt[0],&flt[102…
あと自分で考えろ
学校の宿題じゃないよな?

189:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 22:07:48.28 Uj3W8dOJ0.net
>>181
>>183
へー、そのstd::sort引数の『…』の部分をkwsk

190:175 (ワッチョイ 8317-LYlF)
16/06/20 22:14:37.56 A1k1A+0q0.net
>>178
レス有難う御座います
Windows特有のものだったのか・・・

191:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/20 23:07:52.06 ySgS+Tc+0.net
float f[1024] = {…};
std::sort(begin(f), end(f));
って、この程度じゃね?
試してないけど。

192:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 23:16:15.40 Uj3W8dOJ0.net
>>186
sortに実数は処理系依存で第三引数を指定しないと使えないと記憶していたが使えるの?

193:デフォルトの名無しさん (ワッチョイ fc42-qS7w)
16/06/20 23:21:40.03 o6DROSFS0.net
実数のpredictorが処理系によって変なbool返すことなんかあるの?

194:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/20 23:34:48.91 Uj3W8dOJ0.net
多くの処理系ではfloatがstrict weak orderingを満たしていないので規定のoperator<は使えなかったような
少なくとも実態は↓
URLリンク(ideone.com)

195:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/20 23:36:46.58 jkugRtjka.net
>>179
最速でと言っている以上、マルチコアプログラミング必須だろう。素人の質問ではない

196:デフォルトの名無しさん (ワッチョイ 5c7b-NLZX)
16/06/20 23:39:33.18 3NNTVW740.net
ぷっ

197:デフォルトの名無しさん (ワッチョイ 5c7b-NLZX)
16/06/20 23:43:50.50 3NNTVW740.net
こんな時間にわざわざナン食いたくなってきた

198:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/21 00:01:38.49 gNm/C6TY0.net
>>190
データの初期条件を書かない時点で素人

199:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 00:08:13.00 NNernMLQ0.net
>1024個のfloat配列
もうこの時点でカオス
floatの配列が1024個あるんだろ?

200:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/21 00:11:07.05 RCvb5i87a.net
素人ぼく「なるほど」

201:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 00:15:24.16 NNernMLQ0.net
>>189
だったら候補から nan だけ remove_if で抹消しておけばいいだけの話だろ
今そういうチンケなミソカスなレベルの話をしているわけじゃない

202:デフォルトの名無しさん (ワッチョイ e17b-dMW/)
16/06/21 00:15:58.24 dI1rBvhw0.net
>>170
別にそういう面倒臭さはたいした事ないけどな。
問題は具体的なエラー処理をどの階層に統一的に記述するかってことで
例外処理は必要になるって話だろ。

203:デフォルトの名無しさん (ワッチョイ 4d4a-P8Zx)
16/06/21 00:21:22.28 TOLYnEfM0.net
>>179
最速のパソコンを使え

204:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 00:44:12.82 2sqF1eLz0.net
>>196

205:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 00:44:58.41 2sqF1eLz0.net
>>196
ほう、お前の妄想ではどういう話だったのかね?
float配列をソートしたいという要求に対してstd::sortの前提条件を無視した或いは
それを守るために必要な処理を省いたコードを教えるのは
質問者を陥れているようにしか見えないのだが

206:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 00:59:39.29 NNernMLQ0.net
>>200
うるせぇなオメェ
細かいことチマチマ指摘してんじゃねぇよ

207:デフォルトの名無しさん (ブーイモ MMa8-qS7w)
16/06/21 01:02:46.90 zxMwhnoQM.net
クレーマーには触っちゃダメ、絶対。
煽って答え出させて重箱の隅つつく人が常駐してるから気を付けてね

208:デフォルトの名無しさん (ワッチョイ 5c7b-NLZX)
16/06/21 01:04:30.49 94Qtn0uR0.net
>>200
そもそもnanを含んだ配列が>>189みたくsortされるからって何?
まずお前の「前提条件を満たしたコード」とやらを示せよこのタコ入道

209:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 01:35:46.23 2sqF1eLz0.net
>>203
大小判定や同値判定を見誤るから、nan以外の相対関係もおかしくなる
URLリンク(ideone.com)
それに+0.0fが-0.0fより小さいように見えるのも望ましい結果ではないだろう
>「前提条件を満たしたコード」とやらを示せよ
めんどくさいから少し訂正させてくれ
「sortはstrict weak orderingが前提なのでfloatに対して使うべきものではない」

210:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 01:47:57.49 NNernMLQ0.net
>>204
sort 自体を否定するとか馬鹿だろお前

211:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/21 02:14:30.77 gNm/C6TY0.net
sortは細かい判定条件をラムダ式でいじって使うもんだぞ

212:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 02:22:43.63 2sqF1eLz0.net
いやまったくだな
>>187の時点でその話をしようとしたら通じなかったので、
既定のコンパレーター版に絞ろうと話を端折ったら
「sort自体を否定」とかよくわからんことを言い出す奴がいて驚きだ

213:デフォルトの名無しさん (ワッチョイ 0130-QNxj)
16/06/21 02:27:25.77 8zVH+zTl0.net
ほおらみんな大好き規格だよ
文面そのものしか理解できない人には
文の意味するところを正しく理解するのは難しいのかなあ?
> 25 Algorithms library
> 25.5 Sorting and related operations
> p3 For all algorithms that take Compare, there is a version that uses operator< instead. That is, comp(*i, *j)
> != false defaults to *i < *j != false. For algorithms other than those described in 25.5.3, comp shall
> induce a strict weak ordering on the values.

214:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 02:34:58.24 NNernMLQ0.net
>>207
お前さ、重要なところ短縮して英訳しているくせに開きなおんなよ

215:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 02:36:11.68 NNernMLQ0.net
英訳じゃない和訳だな

216:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/21 02:40:01.85 NNernMLQ0.net
オメェみたいな短縮和訳馬鹿が居るからおかしな文献が巷を占領して間違った知識が日本人に定着してんだろがドアホ

217:デフォルトの名無しさん (ワッチョイ 30cf-UcEt)
16/06/21 03:16:59.11 t1Pm//IA0.net
>>204
おかしくなるのは配列がnanを含んだ場合だけでしょ?
nanを含まないfloat配列には使えるんだから
「sortはstrict weak orderingが前提なのでfloatに対して使うべきものではない」とまでは
言えない(一般化はできない)のでは?

218:デフォルトの名無しさん (ワッチョイ abe7-wM7A)
16/06/21 05:12:42.68 fPQg0ArG0.net
URLリンク(ideone.com)
VCだと動くんだけどなー。
gをdにできる人いる?
とりあえず暇だったから無駄な努力してみたんだけど。

219:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 08:10:40.25 2sqF1eLz0.net
>>212
>>208にあるように『on the values.』だから、対象の配列に変な値が入っていなければOKと言うことになるな
だがfloat計算で値がNaNになることは通常だし、一般化の観点では(可能性が排除されていない以上)駄目かと

220:デフォルトの名無しさん (アウアウ Sac5-77//)
16/06/21 08:19:52.07 UGnXUd83a.net
速度は boost::optional >> 例外

221:デフォルトの名無しさん (ワッチョイ 353c-qS7w)
16/06/21 17:59:51.47 oDvUiKTs0.net
クソスレ

222:デフォルトの名無しさん (ササクッテロ Sp4d-ntlg)
16/06/21 20:30:30.31 /2xf0llxp.net
そんなこと言いつつどうせ
nanがでないことが明らかな状況ならコンパレータなしのstd::sort使うでしょ

223:デフォルトの名無しさん (ワッチョイ 5c7b-NLZX)
16/06/21 21:34:53.54 94Qtn0uR0.net
まあ場合にもよるだろうけどnanがある時点で普通はバグだわな(>>214にとっては通常みたいだけどw) そんなものをソートするなんて気が狂ってる



225:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/21 21:44:13.59 gNm/C6TY0.net
そういえば-0.0を判定する方法ってある?

226:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 21:47:37.24 2sqF1eLz0.net
>>219
多分
v==0.0 && std::signbit(v)//#include<cmath>

227:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 21:49:07.39 2sqF1eLz0.net
signbitはマクロなのでstd::が付かないかもしれない

228:デフォルトの名無しさん (ブーイモ MMa8-qS7w)
16/06/21 21:55:32.01 /+hzxGEKM.net
(*(uint*)&val) != 0x80000000u
とかかしら…

229:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/21 21:56:39.53 2sqF1eLz0.net
signbitはCではマクロだったがC++は関数だった。まあいいか

230:デフォルトの名無しさん (ワッチョイ c602-4fuR)
16/06/21 21:59:14.02 gNm/C6TY0.net
>>220
なるほどな
0でもちゃんと判定してくれるんだな

231:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/22 00:09:44.23 lhXu2xXYa.net
>>222
とかかしらってなんだよ。男らしくないな。~かしらなんて言う男は俺はのび太以外知らねえ!

232:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/22 03:30:25.04 L68kwCJ00.net
>>223
オメェしつけぇんだよ
いつまでグダグダ言ってんだよ

233:デフォルトの名無しさん (ワッチョイ abe7-wM7A)
16/06/22 03:46:51.38 BIlbzxem0.net
いらいらすんなよ。

234:デフォルトの名無しさん (ワッチョイ b1dc-5rjR)
16/06/22 07:30:18.83 cwQouqrz0.net
文末が「~かしら」になってるのは
投稿者が女性だと思えばいいんじゃないかしら。

235:デフォルトの名無しさん (ワッチョイ abe7-wM7A)
16/06/22 08:15:41.55 BIlbzxem0.net
かしらかしらごぞんじかしら。

236:デフォルトの名無しさん (ワッチョイ e5a2-qS7w)
16/06/22 08:16:50.88 QJLicZbi0.net
なるほど、かしら。

237:デフォルトの名無しさん (ワッチョイ 7063-qS7w)
16/06/22 08:21:11.24 uS7mSXVf0.net
>>226
いや失礼したこれはすまんな
ところで昨日の>>211は何だったんだ?
「和訳」とか「文献が巷を占領」とか「日本人に定着」とか、何を言っているのかさっぱり理解できなかった

238:デフォルトの名無しさん (アウアウ Sac5-OECi)
16/06/22 09:13:55.09 lhXu2xXYa.net
2chに女は居ない。

239:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/22 09:57:23.70 0rcNr1i50.net
女は2chに居ない
だろ

240:デフォルトの名無しさん (ワッチョイ 30cd-sEca)
16/06/22 09:58:08.40 0rcNr1i50.net
>>228
エピの可能性あるんじゃないかしらん?

241:デフォルトの名無しさん (ワッチョイ c342-4fuR)
16/06/22 10:02:29.02 S4ISOPGK0.net
鬼女板行ってみれ

242:デフォルトの名無しさん (ワッチョイ c6cc-qS7w)
16/06/22 12:38:37.12 L68kwCJ00.net
>>231
それ理解できないなら貴様の頭が相当弱いってことだ

243:デフォルトの名無しさん (ワッチョイ b1a5-o3Bz)
16/06/22 22:11:47.41 1pVyv3ep0.net
俺、女だよ

244:デフォルトの名無しさん (ワッチョイ b7cb-jO4j)
16/06/23 22:29:59.26 GIAI+oE/0.net
std::tuple< std::string&& > a( std::string( "aaaaaaaa" ) );
std::cout << std::get< 0 >( a ) << std::endl;
とやると何も出力されません何故ですか
vc2015です

245:デフォルトの名無しさん (ワンミングク MMcf-gJJb)
16/06/23 22:41:10.07 /04P5n9zM.net
stringの寿命がつきてるから

246:デフォルトの名無しさん (ワッチョイ 4742-gJJb)
16/06/24 00:09:11.65 y9xGd3/D0.net
return std::move(obj);
って意味ある?
NRVOが阻害されるだけで使いみちない気がするんだけどイマイチ理解してない

247:デフォルトの名無しさん (ワッチョイ efb5-gJJb)
16/06/24 00:30:41.47 lIQqToSu0.net
>>240
objがNRVOの働かない変数や右辺値扱いされないID式の時には役に立つ可能性が否定できないかも知れない

248:デフォルトの名無しさん (ワッチョイ ef02-jO4j)
16/06/24 02:10:21.14 jii+zZf10.net
>>240
それにしかできないことはreturnのタイミングで寿命が尽きない変数に対してmoveが使えること
クラスのメンバ、グローバル変数、ラムダ式のキャプチャした変数、参照渡しした変数とかに対してmoveが使える
使い道はメンバの値を取り出して初期化する関数とかくらい�


249:オか思いつかない



250:デフォルトの名無しさん (ワッチョイ ef02-jO4j)
16/06/24 02:14:28.75 jii+zZf10.net
あとNRVOが実装されてないクソコンパイラで使える

251:デフォルトの名無しさん (ワッチョイ 9b7b-LLnp)
16/06/24 03:12:50.77 KfxfBd4P0.net
moveまで実装しつつNVROに対応してないなんてコンパイラ存在しないと思うけどな

252:デフォルトの名無しさん (オッペケ Srb7-gJJb)
16/06/24 10:38:43.01 6KaoEWJir.net
>>243
NRVOの無いコンパイラーだと
move有り無しでどう違うのかkwsk

253:デフォルトの名無しさん (スプー Sd8f-gJJb)
16/06/24 11:44:52.91 ryEKZAMad.net
そりゃコピコンが動くのかどうかなんじゃないの?

254:デフォルトの名無しさん (オッペケ Srb7-gJJb)
16/06/24 12:11:06.09 6KaoEWJir.net
幾ら何でもC++の規格はそこまでマヌケではない

255:デフォルトの名無しさん (スプー Sd8f-gJJb)
16/06/24 12:20:13.47 ryEKZAMad.net
>>247
必ずしも関数スコープ内ローカル変数のreturnに限定した話ではないので

256:デフォルトの名無しさん (アウアウ Sa77-X2hC)
16/06/24 13:19:14.55 /3QNO0r0a.net
c++を開発したって言われてる、ビャーネは具体的には何を作ったの?
コンパイラ?

257:デフォルトの名無しさん (スプー Sd8f-gJJb)
16/06/24 13:33:28.97 ryEKZAMad.net
>>249
ユニコード

258:デフォルトの名無しさん (ワッチョイ 1b7b-iWcA)
16/06/24 14:29:13.01 gUVe9uqS0.net
>>249
cfront

259:デフォルトの名無しさん (JP 0H57-kDJ5)
16/06/24 21:22:59.63 RKgBQkvWH.net
>>249
つ wikipedia

260:デフォルトの名無しさん (ワッチョイ c70f-/9v5)
16/06/24 22:10:53.49 3kZY+ixW0.net
>>249
ARM

261:デフォルトの名無しさん (ワッチョイ 4b54-gJJb)
16/06/25 00:29:09.66 PnL04P5G0.net
>>249
ハゲの尊厳n

262:デフォルトの名無しさん (アウアウ Sa77-X2hC)
16/06/25 16:30:56.22 WM8etTyAa.net
Windows10もcで書かれてるの?
それともc++?

263:デフォルトの名無しさん (ワッチョイ ef02-jO4j)
16/06/25 16:40:59.75 ns4573pb0.net
両方

264:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/25 21:48:59.88 oRr2IVma0.net
NTはデフォC++でそ

265:デフォルトの名無しさん (ワッチョイ 1f13-msxm)
16/06/25 22:34:46.29 mLaPN0S30.net
>>257
win32api を C++ で実装するのは大変なのでは?

266:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/25 23:04:55.63 oRr2IVma0.net
>>258
いいえ全然。
extern "C" これだけですよ、これだけ。

267:デフォルトの名無しさん (ワッチョイ fb7b-jO4j)
16/06/25 23:18:54.37 Mfi8L5BO0.net
stdcall

268:デフォルトの名無しさん (アウアウ Sa77-X2hC)
16/06/25 23:29:51.21 9ZjTEfbPa.net
>>259
c++を勉強しようね

269:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/26 00:17:48.35 ifKGTnOo0.net
windows.hの各種定数をenumclassに書き換えたい衝動に狩られることがある。

270:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/26 11:20:18.79 9EK0IVkl0.net
LPなんちゃらを殲滅したい衝動にかられる

271:デフォルトの名無しさん (ワッチョイ ef02-jO4j)
16/06/26 13:38:19.19 UMVeVI2s0.net
何でマイクロソフトは読みやすくなるわけでもないのにtypedefしまくってるんだ

272:デフォルトの名無しさん (ワッチョイ efcc-gJJb)
16/06/26 13:55:36.80 lLkVzKIc0.net
C言語との互換性

273:デフォルトの名無しさん (ドコグロ MM17-gJJb)
16/06/26 13:58:45.19 qLHqrl/uM.net
別に読みやすくするため(だけ)に typedef する訳じゃないし

274:デフォルトの名無しさん (JP 0H57-kDJ5)
16/06/26 14:28:28.09 0+Or/a+eH.net
16bit -> 32bit の以降の時の遺物だろう
ひょっとしたら Alpha とかサポートしてた時の都合かもしれんが

275:デフォルトの名無しさん (ワッチョイ aba2-gJJb)
16/06/26 14:52:30.99 s81Ug6VY0.net
そして今、
32bit -> 64bit
で同様にいろいろ変更されている。
…しかし、わざわざ中身の型の方に依存した書き方をしてしまった人が多かったものだから阿鼻叫喚という。

276:デフォルトの名無しさん (ワッチョイ fb51-SJKp)
16/06/26 14:58:27.80 xlZVWDWM0.net
*STRなんかは静的解析でNULターミネートされていない可能性を検出してくれたりもする。

277:デフォルトの名無しさん (ワッチョイ 9b7b-LLnp)
2016/06/2


278:6(日) 16:56:44.66 ID:Rc5W3RoT0.net



279:デフォルトの名無しさん (ワッチョイ 1f13-msxm)
16/06/26 17:50:05.24 cK3U3ti80.net
>>259
いやいや,中身をC++で書いているのに,外皮だけCのインターフェースにするなんて出来ないのでは?デストラクタとかどうするの?

280:デフォルトの名無しさん (ワッチョイ eb3c-wRvM)
16/06/26 17:52:03.24 8klNB0Ny0.net
自分で呼ぶしかありませんね。

281:デフォルトの名無しさん (ワッチョイ 6f9f-6XJa)
16/06/26 17:58:33.26 720vsR4T0.net
CloseHandle のような後始末のインターフェースがあれば問題ない

282:デフォルトの名無しさん (ワッチョイ 1f13-msxm)
16/06/26 18:04:00.80 cK3U3ti80.net
>>273
いやだからさ,>>257 NTはC++ で書かれている,というのは本当かな?と

283:デフォルトの名無しさん (ワッチョイ 1763-gJJb)
16/06/26 20:51:00.59 UsuidMmr0.net
どの辺が「だから」だったのかと>>273は思ったに相違ない

284:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/26 21:09:34.11 9EK0IVkl0.net
>>271
win32apiでデストラクタって何の話?
ちなみにCOMだってC++じゃなくCでサーバーもクライアントもOKだぞw

285:デフォルトの名無しさん (ワッチョイ 1f13-msxm)
16/06/26 22:22:57.53 cK3U3ti80.net
>>276
>>274

286:デフォルトの名無しさん (ワッチョイ fb51-SJKp)
16/06/26 22:53:43.27 xlZVWDWM0.net
>>274の疑問を持った根拠が>>271というわけじゃないのか?ループしてるぞ。

287:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/26 23:05:44.00 9EK0IVkl0.net
>>274
400万行のC++だよ

288:デフォルトの名無しさん (ワッチョイ c77b-5cVk)
16/06/26 23:44:55.78 LjaEIKAj0.net
>中身をC++で書いているのに,外皮だけCのインターフェースにするなんて出来ないのでは?
内部は開発効率化のためにC++で書くけれど外部インターフェースはCにするという要請はよくあることだし
俺もそういうライブラリ書いたことある

289:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/27 01:12:28.35 uDyvV7QG0.net
クラスは関数でラップすればデストラクタ等はその中で処理される。
その後手続きをCでエクスポートすれば外部的にはCライブラリ。

290:デフォルトの名無しさん (ワッチョイ 1f13-msxm)
16/06/27 07:07:12.19 q77XyyHa0.net
そうか thx

291:デフォルトの名無しさん (オッペケ Srb7-gJJb)
16/06/27 07:28:15.79 7Fk1LScMr.net
>>279
それはWindows NT 3.51の時代な

292:デフォルトの名無しさん (ワッチョイ dbdc-Wdu2)
16/06/27 07:30:40.79 4MiplAQJ0.net
今、Win10はC#で書いてるのかな。

293:デフォルトの名無しさん (ワッチョイ 170b-gJJb)
16/06/27 09:32:57.52 SokS5zaj0.net
いや、そのc#の実行環境を何で書いてるのかとかそういうレベルの話をしていると思うんですけど

294:284 (ワッチョイ dbdc-Wdu2)
16/06/27 12:30:55.29 4MiplAQJ0.net
俺の書いた >>284 も同じ趣旨。
つまりC#はOSを書ける言語なのかな、ということ。
C#知らないんで「そんなワケねぇだろ」という話かもしれないが。

295:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/27 13:27:28.47 XsngVlFh0.net
URLリンク(blogs.msdn.microsoft.com)

296:デフォルトの名無しさん (ワッチョイ ef02-jO4j)
16/06/27 19:35:33.11 IGJLedlW0.net
.netは技術的にはネイティブコードにできるからマイクロソフトにかかれば何でもできる
一般向けのは無理だけど

297:デフォルトの名無しさん (ワッチョイ 9b7b-kLFr)
16/06/27 21:25:08.85 47vAhopU0.net
こんな暗黙的な動作の多い言語でOS書くわきゃねーだろ。

298:デフォルトの名無しさん (アウアウ Sa77-X2hC)
16/06/27 21:58:56.71 VebqeWPma.net
>>280
そうする理由は?

299:デフォルトの名無しさん (ワッチョイ 7b75-/9v5)
16/06/27 23:17:05.99 XsngVlFh0.net
C++がCの拡張であることが答えだと思うが?

300:デフォルトの名無しさん (ワッチョイ fb7b-jO4j)
16/06/28 00:17:11.56 EhMwM3C70.net
そうじゃないだろ。
C++はABIに統一ルールがないから
ルールのあるCで出すしかない

301:デフォルトの名無しさん (ワッチョイ 2ba1-g/oQ)
16/06/28 00:53:08.22 S1GtACVo0.net
DLLの話で…
extern

302:デフォルトの名無しさん (ワッチョイ 2ba1-g/oQ)
16/06/28 00:53:55.90 S1GtACVo0.net
また引用符できれた。あーあ

303:デフォルトの名無しさん (アウアウ Sa77-4am/)
16/06/28 01:50:08.94 a+4o3zCZa.net
C/C++は禿るからなるべく使いたくない、後発言語を使おう

速度が出ないぞ、困った

アルゴリズムを改善しよう

速度が出ないぞ、困った

低レベルに手を入れよう。でもアセンブリ言語でCPU依存の最新命令をゴリゴリ書く才能はないぞ

Cは禿るからなるべく使いたくない

C++なら脱毛量も抑えられるのでは?

304:デフォルトの名無しさん (ワッチョイ efcc-gJJb)
16/06/28 02:23:52.24 6jJux1LZ0.net
Cはいろいろ気を使うからな
奴らはCでもオブジェクト化できる!とか言いながらパラメタ渡しに気を使い杉てハゲていくからね
例えるならC++がヤマトヌマエビ(素早い)でCがイシマキガイ(鈍い)みたいな社蓄だな

305:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/28 03:03:25.48 mvAMGztx0.net
OOの隠ぺいは発明だと思うわ。
汚く書きたいとは思わんけど、どうしても見せたくない部分ってあるからね。
ユニファイドコールシンタックスはまだかー。俺の黒魔術が火を噴くぜ。

306:デフォルトの名無しさん (ワッチョイ 9b7b-LLnp)
16/06/28 03:48:28.00 d4cEk4D30.net
>>297
UnifiedCallSyntaxが無いと出来ない事ってある?

307:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/28 03:53:33.73 mvAMGztx0.net
>>298
いや、特にないよ。汗
ただ、汎用関数でconstexprとかの練習をしたいので切り分けられるという点に魅力を感じている。
まだ初心者なので・・・。Orz
まぁ、関数チェインができることが一つの魅力かなーと思ってる。
手続きをまとめられるかなーと。
それも視方によってはかなり汚いのだけどね。

308:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/28 03:57:41.83 mvAMGztx0.net
関数チェインではvector vに対して、
v.map([](){}).reduse([](){}).get();
などのチェインができるようになる。
まぁ、そういう風に書かないといけないんだけどね。

309:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/28 04:07:21.30 mvAMGztx0.net
template<class T,std::size_t N>
constexpr std::size_t Size(T (&A)[N]){return N;}
と書いて、
int Array[10]={'0',};
std::size_t S = Array.Size();
とかもね。

310:デフォルトの名無しさん (ワッチョイ 43e7-vrBh)
16/06/28 04:24:29.18 mvAMGztx0.net
くどいけど、一応希望的観測も入ってるから。。。Orz

311:デフォルトの名無しさん (オッペケ Srb7-gJJb)
16/06/28 08:10:49.54 wUFLL660r.net
Visual C++のbasic_string::dataが書き込めるようになったらしいが
塗る文字は書き込んでいいの?
N4582 21.3.1.7.1
The program shall not alter the value stored at p + size().

312:デフォルトの名無しさん (ワッチョイ 9b7b-LLnp)
16/06/28 08:52:02.27 d4cEk4D30.net
>>303
size()の位置には何も書き込んじゃだめ

313:デフォルトの名無しさん (JP 0H57-kDJ5)
16/06/28 09:02:07.83 4uPkxyfrH.net
何を塗るのかと考えてしまったわけだが

314:デフォルトの名無しさん (ワッチョイ 9d7b-macT)
16/06/30 00:55:59.22 dSZkCmBK0.net
>>295
残念、最近の軽量言語は c を呼び易くなってる。
c++ は何もかも中途半端な器用貧乏。

315:デフォルトの名無しさん (ワッチョイ d57b-R7o+)
16/07/01 21:35:42.35 N5RTRs5b0.net
swig使えばLLからC++余裕

316:デフォルトの名無しさん (ワッチョイ 808b-JaNH)
16/07/03 08:44:12.57 HcRra/sZ0.net
質問
同じ名前の関数で、値渡しの引数にconstが付いたやつとそうでないやつって
同じスコープ内なら言語規格上常に同じものとみなされる?何か例外無い?
例1: 下記関数のオーバーロードは不可能?
 void foo(const int x);
 void foo(int x);
例2: 下記の前方宣言と関数定義は、同一の関数fooの宣言と定義として問題無い?
 extern void foo(int x);
void foo(const int x);
例3: 例2と同様だがconstの有無が反対のパターン
 extern void foo(const int x);
void foo(int x);
VC2010で実験する限り例1エラー、例2、例3おk、に見え、foo()の実体は一つとみなされるっぽい

317:デフォルトの名無しさん (ワッチョイ dd7b-9j2g)
16/07/03 09:12:00.13 GHSyq4ku0.net
>>308
同じ
intをコピーして渡すのだからそれにconstがついてようがついていまいが呼び出し側に何の影響もないからね。

318:デフォルトの名無しさん (ワッチョイ 9fe7-JaNH)
16/07/03 09:27:27.37 TDiL8ANR0.net
呼び分けたいなら、参照と混ぜるのがいいのかな。

319:デフォルトの名無しさん (ワッチョイ 9fe7-JaNH)
16/07/03 09:28:04.47 TDiL8ANR0.net
あー違うかも・・・。Orz

320:デフォルトの名無しさん (スプッ Sdb8-s3GQ)
16/07/03 09:39:24.57 eF+utK+dd.net
つーか呼ぶ側がどうやって呼び分けるつもりなのだろう。

321:デフォルトの名無しさん (ワッチョイ 9fe7-JaNH)
16/07/03 09:49:09.48 TDiL8ANR0.net
やっぱだめか。無駄レスすまんかった。

322:デフォルトの名無しさん (ワッチョイ dd7b-nIaX)
16/07/03 10:45:12.34 GHSyq4ku0.net
呼び分けたい理由がわからんけど、分けたいならtemplate使えばいい
URLリンク(ideone.com)

323:デフォルトの名無しさん (ワッチョイ 1e02-R7o+)
16/07/03 12:23:07.37 URB4sXSa0.net
そもそも何で同じにするのか
ネーミングセンス無いなら名前空間で分けろよ

324:デフォルトの名無しさん (ワッチョイ 1e3c-s3GQ)
16/07/03 13:00:29.02 FivcklIc0.net
オーバーロード全否定 w

325:デフォルトの名無しさん (ワッチョイ 3575-NBGD)
16/07/03 13:03:19.04 XUDM007B0.net
>>308
N3797 P.284
Parameter declarations that differ only in the presence or absence of const and/or volatile are
equivalent. That is, the const and volatile type-specifiers for each parameter type are ignored when
determining which function is being declared, defined, or called. [ Example:
typedef const int cInt;
int f (int);
int f (const int); // redeclaration of f(int)
int f (int) { /* ... */ } // definition of f(int)
int f (cInt) { /* ... */ } // error: redefinition of f(int)
―end example ]

326:デフォルトの名無しさん (ワッチョイ 9fe7-JaNH)
16/07/03 13:05:18.24 TDiL8ANR0.net
新鮮な規格だ~。

327:デフォルトの名無しさん (ワッチョイ 1e02-R7o+)
16/07/03 13:56:08.24 URB4sXSa0.net
>>316
引数も同じにしたいって言ってるんだぞ
その次はテンプレートか名前空間で分けるしかないじゃん

328:デフォルトの名無しさん (ワッチョイ 808b-JaNH)
16/07/03 14:03:55.46 HcRra/sZ0.net
>>319
何を持って同じ引数とみなすかが問題なのでは…
関数引数については>>309の通りなので多分>>317の規格がある
テンプレートの引数についてはconstの有無を無視したら困る(ことも考えられる)
から>>314のようになっている
希ガス、

329:デフォルトの名無しさん (ワッチョイ 1e3c-s3GQ)
16/07/03 14:19:01.23 FivcklIc0.net
>>319
> 引数も同じにしたいって言ってるんだぞ
妄想乙

330:デフォルトの名無しさん (ワッチョイ 8063-s3GQ)
16/07/03 19:47:44.01 CJZHBW3I0.net
仮引数のconstは関数本体の解釈にしか影響しないので
別の関数にしてforwarding referenceのテンプレートで振り分けるしか無いか。
と思ったが、引数の型がintなのでそれも出来ず

331:デフォルトの名無しさん (ワッチョイ 8063-s3GQ)
16/07/03 20:39:14.60 CJZHBW3I0.net
>>312
こうだろう
URLリンク(ideone.com)
も�


332:オクラス型だったなら、常人にとって直感的な呼び分けはできる



333:デフォルトの名無しさん (アウアウ Sa61-s3GQ)
16/07/03 21:16:34.18 VogRIy5Ba.net
f_constとf_not_constて名前違うやん
そうすりゃ呼び分けられるのは当たり前やろwwww

334:デフォルトの名無しさん (ワッチョイ 8063-s3GQ)
16/07/03 21:32:17.76 CJZHBW3I0.net
>>324
呼び分けの呼び出し「元」の記述イメージを書いたのが実は45行目以降だった失礼

335:デフォルトの名無しさん (ワッチョイ 40cd-wGMc)
16/07/04 02:44:51.10 aKsb1ucX0.net
boostの正規表現での検索ってperlより速いですか?

336:デフォルトの名無しさん (ワッチョイ 1e02-R7o+)
16/07/04 03:03:10.02 E0X6Js8A0.net
そりゃ

337:デフォルトの名無しさん (アウアウ Sa61-4ZHw)
16/07/04 03:34:51.14 pbD1RD37a.net
std::regexが競プロに使えないくらい遅い

338:デフォルトの名無しさん (ワッチョイ 808b-JaNH)
16/07/04 22:21:44.04 ikWLTUmz0.net
毎回FSMをコンパイルし直しているのではないか

339:デフォルトの名無しさん (ワッチョイ 3a73-x3AI)
16/07/05 13:34:35.95 D6k3Q2ii0.net
>>303
えと、"ABC"を"CDF"に書き換えるときは問題ないけど
"ABC"を"CD"に書き換える場合 p + size()の位置を'\0'に書き換えないと
"CD"+ゴミ文字+'\0'と言うわけの判らない状態になるんじゃないの?
"ABC"を"ABCD"+'\0'に書き換えるのはバッファサイズが足りない可能性があるので無理だろうけど

340:デフォルトの名無しさん (ワッチョイ 3a73-x3AI)
16/07/05 13:38:42.15 D6k3Q2ii0.net
>>330
補足
この場合、新しい size() サイズは2だね

341:デフォルトの名無しさん (ワンミングク MM40-9j2g)
16/07/05 14:06:57.61 jyuF/kASM.net
>>330
s.data()[size()]を書き換えちゃダメ
"ABC"を"CD"に書き換える場合 CDをコピーした後resize(2)する。

342:デフォルトの名無しさん (アウアウ Sa61-4ZHw)
16/07/06 23:01:07.77 s9ecTOGAa.net
フールプルーフできないのか
せめてありがちな間違いを起こしそうならライブラリ設計者が警告出せるような仕組みが欲しい

343:デフォルトの名無しさん (ワッチョイ 8063-s3GQ)
16/07/06 23:08:44.35 svlco4IY0.net
>せめてありがちな間違いを起こしそうならライブラリ設計者が警告出せるような仕組み
C/C++が最初から捨ててきたことを「せめて」とか言われても…

344:デフォルトの名無しさん (ワッチョイ 1e02-R7o+)
16/07/06 23:31:46.62 S1fNdcb40.net
補助輪付けたら遅くなるだろ

345:デフォルトの名無しさん (アウアウ Sa61-4ZHw)
16/07/06 23:47:30.48 s9ecTOGAa.net
コンパイルタイムの話ですよコンパイルタイム

346:デフォルトの名無しさん (ワッチョイ d306-UmxN)
16/07/07 06:43:15.53 EFIqG9u50.net
静的試験ツールなんてなんぼでもあるだろ

347:デフォルトの名無しさん (JP 0H9f-02zg)
16/07/07 06:58:15.43 eLSt6oyyH.net
コンパイルおせえよクソがと散々言われ続けてるのにまだ遅くするのか
D言語にしとけ

348:デフォルトの名無しさん (ワッチョイ 9742-UmxN)
16/07/07 22:20:09.22 e0JO7czi0.net
コンパイル遅いのは許せる
実行遅いのは許せない・・・自分を

349:デフォルトの名無しさん (ワッチョイ 47cd-Bmei)
16/07/08 01:02:35.60 CUMeTHck0.net
>>328
それくらい自分でかけよ

350:デフォルトの名無しさん (ワッチョイ 837b-esBB)
16/07/08 01:03:49.31 wvqVojA50.net
moduleはC++17に入るの決まったんだっけ?

351:デフォルトの名無しさん (ワッチョイ ef02-Bfmi)
16/07/08 01:20:15.51 XHOIzNG40.net
入らない

352:デフォルトの名無しさん (アウアウ Sa1f-uVi+)
16/07/08 02:22:39.04 EjlSfwF/a.net
14でさえ把握できてないのに17も覚えないといけないの!

353:デフォルトの名無しさん (ワッチョイ ef02-Bfmi)
16/07/08 02:31:42.73 XHOIzNG40.net
そんなに変わるところはない
採択された案のほとんどは修正だし
コア言語はマイナーアップデート程度
ライブラリは増える

354:デフォルトの名無しさん (スプー Sdbf-oo3f)
16/07/08 07:40:36.88 Flii99Vkd.net
std::const_reverse_iterator<hoge::iterator> func()
{
return {hoge().begin()};
}
でリバースイテレータが作れません。何故ですか

355:デフォルトの名無しさん (オッペケ Sr1f-oo3f)
16/07/08 08:03:32.96 8iyC4OaEr.net
コンパイラーのエラーメッセージを読めばわかるのでは

356:デフォルトの名無しさん (スプー Sdbf-oo3f)
16/07/08 08:22:34.62 Flii99Vkd.net
constはいらなかったです

357:デフォルトの名無しさん (オッペケ Sr1f-oo3f)
16/07/08 19:02:35.18 8iyC4OaEr.net
コンパイラーのメッセージも読まない荒らしは去れ

358:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK5f-fi14)
16/07/08 19:21:08.43 5bf5xqe9K.net
>>345
rbeginを使え、って言いたいとこだけど、
すぐ寿命が尽きる一時オブジェクトのイテレータを取得しても、意味ねーな。

359:デフォルトの名無しさん (スプー Sdbf-oo3f)
16/07/08 19:23:27.49 J04Ban1Qd.net
意味はまるで問題にしてないのでそのように書いただけです
そのくらい言われなくてもわかるでしょう

360:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK5f-fi14)
16/07/08 19:37:00.88 5bf5xqe9K.net
一時オブジェクトではなく、他の場所にhogeを作らないといけない。

361:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/08 20:23:43.36 yKp6sPcD0.net
おじいちゃんは一つ前のレスも読めないようだ

362:デフォルトの名無しさん (ガラプー KK9f-fi14)
16/07/08 20:33:03.46 5bf5xqe9K.net
意味の無いプログラミングなど有ってたまるか!

363:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/08 21:11:04.27 yKp6sPcD0.net
いきなりどうした
>>345-352と話が繋がってないし
4つ前の自分のレスぐらい覚えてろよ

364:デフォルトの名無しさん (ブーイモ MMbf-oo3f)
16/07/08 21:32:33.08 J765OJydM.net
正直、正しいと思って間違ったことをしてしまう人が
同等の表現なのですと持ち出した例が
本当に最初にはまった事例と同等なのか疑問ではある。

365:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/08 21:36:12.49 +pt5nh+80.net
>そのくらい言われなくてもわかるでしょう
何この上から目線wwwこんな奴初めて見た

366:デフォルトの名無しさん (ワッチョイ 970f-UmxN)
16/07/08 22:51:23.21 mKM2j9np0.net
>>347
おれもそう思う
初めて話を聞いたときはよさげに聞こえたが
付き合えば付き合うほどクソぶりがわかってきた
volatileもそうだがconstも爆発しろだね
volatileにはatomicという出直し案が出ているが
constにはどうするつもりなんだろうね
const&と&&みたいのはクソつーかもうゲリスピーだろ

367:デフォルトの名無しさん (ワッチョイ 837b-esBB)
16/07/08 23:00:06.45 wvqVojA50.net
>>357
コンパイラのエラーメッセージも読まない初心者に同調してそんな中身のない長文書いて恥ずかしくない?

368:デフォルトの名無しさん (ワッチョイ ef02-Bfmi)
16/07/08 23:04:34.64 XHOIzNG40.net
volatileは組み込みのためにある

369:デフォルトの名無しさん (ワッチョイ efcc-oo3f)
16/07/08 23:07:22.75 h6xGzFyv0.net
const がどの辺りまで及ぶのか不明なときがあるよな

370:デフォルトの名無しさん (ワッチョイ a7cb-Bfmi)
16/07/08 23:17:43.60 b6PNZUTC0.net
ほんと馬鹿なんですね
解決方法なんて聞いてないです
なぜ
struct hoge
{
hoge( int ){}
};
hoge func2()
{
//return hoge{ 111 };
return { 111 };
}
はできて
std::reverse_iterator< std::vector< int >::iterator > func()
{
//return std::reverse_iterator< std::vector< int >::iterator >{ std::vector< int >().begin() };
return { std::vector< int >().begin() };
}
はできないのかと言っているんです

371:デフォルトの名無しさん (ガラプー KK5f-fi14)
16/07/08 23:26:59.89 5bf5xqe9K.net
>>361
その理由はコンパイラ先生が教えてくれます。

372:デフォルトの名無しさん (アウアウ Sa1f-oo3f)
16/07/08 23:51:37.51 RJKc3x7Ha.net
>>361
reverse_iteratorのコンストラクタがexplicitだからじゃね

373:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 00:13:03.36 buv4Rqly0.net
>>361
return には値を与えてください

374:デフォルトの名無しさん (ワッチョイ 5be7-3Gy/)
16/07/09 01:19:22.76 FYwNyXTu0.net
テンポラリバリューの値取って何するんだろう。

375:デフォルトの名無しさん (ワッチョイ efcc-oo3f)
16/07/09 01:43:23.98 GFJ5/r//0.net
クラスメンバの記述の後ろに throw で予め例外記述しておくのもよくわからん

376:デフォルトの名無しさん (ワッチョイ efcc-oo3f)
16/07/09 02:25:38.34 GFJ5/r//0.net
>>361
それreturnした瞬間にコンテナ自体がお釈迦になるやろ

377:デフォルトの名無しさん (アウアウ Sa1f-uVi+)
16/07/09 02:28:10.37 OBptfGOha.net
煽れば情報をただで引き出せると思わないでください。不愉快です

378:デフォルトの名無しさん (ワッチョイ 5be7-3Gy/)
16/07/09 02:41:14.74 FYwNyXTu0.net
>>368
貴方の言動が不愉快です。

379:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/09 05:15:58.25 T8+GTzYr0.net
>>361
std::reverse_iteratorはiteratorをreverse_iteratorに勝手に変換してくれるものではないからだよ
そんな魔法はない
リファレンスもエラーメッセージも読めないんじゃC++なんてやめたほうがいいよ
最近妙に湧いてる無用に{}使うやつはみんなバカ

380:デフォルトの名無しさん (ワッチョイ 970f-UmxN)
16/07/09 05:33:59.55 Nk7PlXct0.net
>>361
explicitて書いてあるやないか
どーに目ぇつけとんじゃボケ
気ぃつけんかい

381:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 07:35:21.02 cNqa9fRP0.net
>>364
お前のコーディングスタイルを押しつけられても

382:デフォルトの名無しさん (アウアウ Sa1f-uVi+)
16/07/09 07:50:41.11 OBptfGOha.net
いきなり実践に及んで阿呆なコード書いて動きませんって泣きつく前に、先ず禿本一通り読めよ

383:デフォルトの名無しさん (ワッチョイ 83e2-Bfmi)
16/07/09 07:52:15.50 x6RnoRNv0.net
constの仕様がないほうがバグが減るよな。

384:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 08:15:57.76 cNqa9fRP0.net
>>361
規格の以下を総合するとそうなる
6.6.3The return statement段落2
8.5Initializer段落15
12.3.1Conversion from constructor段落2

385:デフォルトの名無しさん (ワッチョイ a7cb-Bfmi)
16/07/09 09:16:37.56 ZtFVqNou0.net
>>364
>365
>367
>373
誰もそんな事は聞いてませんし問題にしてません
>>362
説明になってないです
>>370
もうちょいがんばれ
>>363
>>371
>>375
これが意味のある回答ってやつです
他のアホどもは反省してください

386:デフォルトの名無しさん (ブーイモ MMbf-oo3f)
16/07/09 10:07:29.54 1kfJJwsoM.net
>376
人に教えをこう立場であることを理解しろ

387:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/09 10:54:19.05 T8+GTzYr0.net
なにが「もうちょいがんばれ」だよ
Iteratorを引数として取るコンストラクタがexplicitな「意味」をわざわざ書いてやったのに
return std::vector<int>().rbegin(); ならコンパイル通るだろ
どうでもいいけど無駄な{}や空白を使うなバーカ

388:デフォルトの名無しさん (ワッチョイ 837b-kN9e)
16/07/09 11:01:13.46 JvlKE5OT0.net
実にc++er らしいやり取り。

389:デフォルトの名無しさん (スプー Sdbf-oo3f)
16/07/09 11:08:30.93 OvnbLC0id.net
>>378
つくづくアホの見本ですね
コンパイルを通す方法は聞いてないのです
一回言ってわからない人は何回言ってもダメですね

390:デフォルトの名無しさん (ワッチョイ db9b-oo3f)
16/07/09 11:10:20.64 cv8lXTF00.net
>>377
スルーできないバカがいっぱいだから煽る方が効率的なのはしょうがない
悔しかったらスルーしてみろ

391:デフォルトの名無しさん (ワッチョイ 837b-kN9e)
16/07/09 11:20:22.24 JvlKE5OT0.net
これが効率的?
本気でそう思ってるならちょっと。。

392:デフォルトの名無しさん (アウアウ Sa1f-oo3f)
16/07/09 11:22:46.74 hsb7nXH/a.net
暇つぶしの効率化w

393:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 11:37:58.35 cNqa9fRP0.net
「答えてみろ」と言わんばかりのおもむろな釣りに対し
質問者の説明すら無視した>>365>>367のうんこレスや
>>364のようなとんちんかんなレスをしたら
罵られても仕方ないだろう

394:デフォルトの名無しさん (ワッチョイ 837b-esBB)
16/07/09 11:47:33.78 3CUWSYwC0.net
他のスレもまあまあ見てるけどこんな風な流れになるのC++スレに限らんよ

395:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/09 12:49:04.40 T8+GTzYr0.net
>>380
378を読んでコンパイルを通す方法を教えてると解釈したお前はアスペ
もういいから荒らしは消


396:えろカス



397:デフォルトの名無しさん (ワッチョイ a7cb-Bfmi)
16/07/09 12:59:22.41 ZtFVqNou0.net
>>370
explicitという単語を明示的に(explicitだけに)出せない当たり回答者としては三流ですね
指摘されてようやく出てくるようでは遅いです。
説明する気がないなら帰っていただいて結構ですので

398:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 13:05:53.32 cNqa9fRP0.net
>明示的に(explicitだけに)
>明示的に(explicitだけに)
>明示的に(explicitだけに)

399:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/09 13:18:52.66 T8+GTzYr0.net
IDコロコロなゴミカスが何か言ってる

400:デフォルトの名無しさん (ワッチョイ 478b-3Gy/)
16/07/09 14:54:32.16 PBlPBx/A0.net
質問
std::vector<T>の添え字の個数の型をsize_t以外(具体的にはint)に変更した版が欲しいんですが
STLの枠組みの中でできませんかね…
変更したい理由は、既存の生の配列vec[]をstd::vector<T> vecに切り替えようとしているのですが
vec.size()の返す型がsize_t(符号なし整数)のままでは下記の問題があるからです。
(1) int n = (vec[]の要素数); というコードを仮にnの型ごと機械的に
  size_t n = vec.size(); に変えると、
  ((vec[]の添え字) >= 0)を継続条件とするループがどっかにあったら死ぬ
(2) かといって、int n = (int)vec.size();とする変更では、そういうキャストが
  複数にちらばってしまいどこがsize_tとintの使い分けの境界なのかイミフなコードになる
  (今後複数人で保守したら(1)タイプの変更と(2)タイプの変更が入り混じることが必至

401:デフォルトの名無しさん (ワッチョイ 478b-3Gy/)
16/07/09 15:05:04.21 PBlPBx/A0.net
んまー要素の個数をsize_tからintにしたらしたで、push_back()時等に要素数が
 std::numeric_limits<int>::max() (ていうかINT_MAX
以下かどうかチェックした方が良い気がするので、
実はそういうチェック付きのstd::vector<T>のwrapperを手で書いた方が良い?

402:デフォルトの名無しさん (ワッチョイ d37b-oo3f)
16/07/09 15:08:33.52 gcTQBWQE0.net
全うなコンパイラなら適切なオプション設定すれば、unsignedが0以上か調べるような無意味な比較は指摘してくれるんじゃないの?

403:デフォルトの名無しさん (ワッチョイ ef02-Bfmi)
16/07/09 15:15:04.86 fXkb1tk70.net
intで収まらない巨大な配列を使うときだけ個別に対処すればいい

404:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 15:45:04.35 buv4Rqly0.net
>>372
スタイルの話ではありません

405:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 15:58:46.21 cNqa9fRP0.net
ほう、では何だというのかね?
値を持たないbraced-init-listをreturnのオペランドに書くなと他人に押しつける意図は?

406:デフォルトの名無しさん (ワッチョイ 977b-cFDw)
16/07/09 16:18:37.10 e7wK9RSW0.net
>>390
明示的にキャストする必要ある?

407:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 17:08:53.73 buv4Rqly0.net
>>395
だから、値を与えてくださいといっている

408:デフォルトの名無しさん (ワッチョイ 9733-oo3f)
16/07/09 17:42:49.14 SM0qakfh0.net
>>390
できないねー。
正論を言ってしまうと、配列のインデクスに使う型はsize_t一択なので、然るべき変換は必要だと思う。
毎度書くか、一つの変換関数を作って通すかは個人の自由だけどね。

409:デフォルトの名無しさん (ワッチョイ 9733-oo3f)
16/07/09 17:50:56.77 SM0qakfh0.net
>>391
おっと、回答が出てるやん。
俺はそうしてるよ。

410:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 20:08:31.82 cNqa9fRP0.net
>>397
差し出がましいようだが、知能発達の障害は生きてて辛いだろうし周りも不幸だ。
自分の生命を絶つという選択肢も有っていいと思うぞ。
「値を与えてください」と意味不明なレスを繰り返すだけなんて悲しすぎすぎる

411:デフォルトの名無しさん (ワッチョイ 4763-oo3f)
16/07/09 20:13:32.28 cNqa9fRP0.net
>>398
>配列のインデクスに使う型はsize_t一択
不勉強ながら存じませんでした
なぜsize_t一択なのですか?

412:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9f-fi14)
16/07/09 20:21:05.92 Mz5tnssEK.net
>>401
符号付きだと、1ビット無駄になる。
64ビット環境でもサイズの制限が少ない。

413:デフォルトの名無しさん (ワッチョイ d37b-oo3f)
16/07/09 20:32:45.23 gcTQBWQE0.net
機械的に置換して済ませようとする癖に、intとsize_tの切り分けがどうとか気にするとか。
intで配列アクセスしている時点でそもそもまともな切り分けがされていないだろうに。
置換して問題のあるところはすべて修正すると言う以外にまともな解決策はない。

414:デフォルトの名無しさん (ワッチョイ 9733-oo3f)
16/07/09 21:09:54.73 SM0qakfh0.net
>>401
まず、配列で符号付きのインデクスって、通常無いでしょ?
特殊用途ではありそうだけど、ほとんどの場合バグになるだけだし。
で、標準ライブラリがsize_t押しなので、使わない手はないでしょ?って感じ。
ただ、int→size_tは暗黙変換可能なので、制限を見切った上で使ったりはするけど。

415:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 21:36:25.11 buv4Rqly0.net
>>400
煽ることで情報をひきだそうとする卑しい奴にはこれで十分なんですよ。

416:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 21:38:40.57 buv4Rqly0.net
>>404
降順でループさせる終了判定をラクしたいだけでしょ

417:デフォルトの名無しさん (ワッチョイ b37b-zDc6)
16/07/09 21:51:18.43 IyKD781m0.net
>>404
なんだ、まぐれでsize_t一択って言ってたのか

418:デフォルトの名無しさん (ワッチョイ 478b-3Gy/)
16/07/09 22:01:28.16 PBlPBx/A0.net
レス㌧クス>>390の回答はいただいたあり~
それはそうとして、配列またはstd::vector<T>の配列様アクセスの添え字が常にsize_tで無ければならない
という主張のは個人的には理想化のしすぎでもあって弊害が大きいと認識する
理由の代表的なもの:
1. size_tは「長さ」を表すという意味をもつ特定用途の型であり、int型より汎用性が高いということはありえない
  (つまりプログラム中の整数を全部size_tにするというのは本末転倒で、どっかにsize_tとそれ以外の整数型を使い分ける境界が必ず生じる
2. 符号なし型と符号有り型の混在は比較時等にバグの元になるからプログラム内に散らばるのは良くないから、
 それらの境界は管理されねばならない
3. 要素数がINT_MAX以上の配列の実行時の必要性とかはメジャーな要求ではありえない
 (2 GBもの配列が千も2千も同時に使用されたら今日日の普通のアーキテクチャではメモリが足りなくなるところだが、現実はそんな問題は生じていない
  つまりたいていの配列の添え字はintで事足りる
4. ビヨーン・ストラストロウップのプログラミング言語C++にstd::vector<T>の配列アクセスをintでやる例が複数出てくる
 (巻の後の方では確かにsize_tを使い始めるが、intの使用も教祖様は禁じておられぬ
どんな使い方をされるかわからない汎用ライブラリはメモリオブジェクトの長さをsize_tとする必要があるかもしれんが
それらを使う立場であるビジネスロジック側まで巻き着込まれるべきとする根拠は無い希ガス、

419:デフォルトの名無しさん (ワッチョイ 9733-oo3f)
16/07/09 22:14:33.91 SM0qakfh0.net
>>408
それでいいんじゃね?
どう思って、どう行動するかは個人の自由。

420:デフォルトの名無しさん (ワッチョイ f3a1-WQfs)
16/07/09 22:20:41.66 DWkJX5X40.net
16ビットのアプリケーションをターゲットにする場合、配列のインデクスにlongを使ったら警告される

421:デフォルトの名無しさん (ワッチョイ ef02-Bfmi)
16/07/09 22:36:30.14 fXkb1tk70.net
普通はめんどくさいからみんなintだよ
使い分けなんて考えてない
intの範囲を超えるときだけアドリブで対処する

422:デフォルトの名無しさん (ブーイモ MMbf-oo3f)
16/07/09 22:40:42.98 Cwu0vuExM.net
>>411
こら、自分の考えを普通とか言うな
俺の職場ではlongが普通
かなりイラッとさせられた

423:デフォルトの名無しさん (ワッチョイ 5b7b-Pl7u)
16/07/09 22:52:41.09 T8+GTzYr0.net
符号付きと符号無しを比較したらワーニング出るでしょ
もちろんワーニングレベル設定にもよるけど

424:デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)
16/07/09 23:01:11.88 whD12s8T0.net
なんでもできちゃう低水準言語においてセキュアコーディングの意識は
もはや必須だと思っていたけどまだこんなにも意識が低い人がいるのか
符号無し整数は問題ないけど符号付き整数のオーバーフローは未定義動作であるとか
知らないからなんでも適当にintとか使ってるんだろう

425:デフォルトの名無しさん (ワッチョイ efcc-oo3f)
16/07/09 23:11:06.59 mCL5F7kx0.net
>>411
おまえみたいなのがいるから後々収集つかなくなってくるんだ!!

426:デフォルトの名無しさん (ワッチョイ 237b-Bfmi)
16/07/09 23:11:31.13 buv4Rqly0.net
longでOKとか思われてもなぁ。
LLP64環境だったらどないすんねんと。
ptrdiff_tとかつかえよ

427:デフォルトの名無しさん (ワッチョイ 837b-esBB)
16/07/09 23:17:24.22 3CUWSYwC0.net
longとか使いどころが解らん
普段はint or size_t で大きさを意識しなきゃいけない所は(u)intxxx_tとか使うぐらい

428:デフォルトの名無しさん (ワッチョイ 970f-UmxN)
16/07/09 23:36:08.18 hbg/zns40.net
intmax_tを使うかmpz_classを使うか
人それぞれでいいだろ

429:デフォルトの名無しさん (ワッチョイ 977b-cFDw)
16/07/09 23:50:50.65 e7wK9RSW0.net
添字として使ったらどうせsize_tに暗黙キャストされるんじゃないの?

430:デフォルトの名無しさん (ワッチョイ 5be7-3Gy/)
16/07/10 00:04:48.46 dveZE7kz0.net
size_tはアーキテクチャのbit数にマッチするようにコンパイラさんが図ってくれるからsize_tを使おう。

431:デフォルトの名無しさん (ワッチョイ 5bc9-oo3f)
16/07/10 01:11:24.42 9l5lNFa80.net
unsigned は極力使うなという教えもある。
0から減算すると大きな正の数になるという直感に反する挙動により、
バグの温床になりやすい。
だから配列のサイズはともかく添え字アクセスはsignedの方がいい。
そもそもsize_tって名前からしてサイズ用途だろ。
これをインデックス用途に流用してるのがそもそも悪い。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch