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


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

C++相談室 part120



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

前スレ
C++相談室 part119
peace.2ch.net/test/read.cgi/tech/1441012744/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

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

369 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 11:13:27.15 ID:pkynDUbv.net]
こういう書き方も出来ないでもないけど

#include <iostream>
#include <string>

template<typename U>
class BasicScopeOutHandler {
U& target_;
U valueToSet_;
public:
BasicScopeOutHandler(U& target, const U& valueToSet) : target_{target}, valueToSet_{valueToSet} {}
void print() const {
std::cout << target_ << std::endl;
}
~BasicScopeOutHandler()
{
target_ = valueToSet_;
}
};

int main()
{
int i = 1;
BasicScopeOutHandler<decltype(

370 名前:i)> outo(i, 0);
outo.print();
std::string s{"abc"};
BasicScopeOutHandler<decltype(s)> outo2(s, "");
outo2.print();
}
[]
[ここ壊れてます]

371 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 11:18:17.84 ID:n84MEZR7.net]
>>354
template<typename U>
BasicScopeOutHandler makeBasicScopeOutHandler(U& target, const U& valueToSet);

int i=1;
auto outo(makeBasicScopeOutHandler(i, 0));

こんな感じでいけなかったっけ?

372 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 11:23:16.31 ID:xR1wQeYt.net]
inline指定した関数がインライン展開される条件がよくわからないんですが
たとえば関数内で関数呼び出しがあるとダメでしょうか?たとえば↓
class a {
vector<int> v_;
public:
inline size_t() {return v_.size(); }
};

373 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 11:30:56.04 ID:pkynDUbv.net]
>>360
stringが素直に動かないけどそういう手もあるな

ideone.com/cWEh9h

374 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 15:50:12.29 ID:l0YqebeX.net]
>>361
inlineは単にコンパイラへのヒントでインライン展開される条件は言語仕様的には決まってないよ
強制的にインライン展開したいなら
__forceinline (VC)
__attribute__((always_inline)) (GCC)

375 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 16:24:49.76 ID:pyzNwXiR.net]
>>363
再帰してたらどうなるの?

376 名前:デフォルトの名無しさん [2015/11/02(月) 17:19:59.82 ID:sH3CQlXL.net]
再帰の深さが翻訳時定数になるならアンロールできるね

377 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 17:39:42.86 ID:l0YqebeX.net]
>>364
どんな関数でもインライン化出来るというわけじゃもちろんない
VCの__forceinlineの場合
https://channel9.msdn.com/Forums/TechOff/56830-Does-forceinline-guarantee-the-code-to-be-inline/fa0cde630fc144cc81cb9dea011d3fc6



378 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 19:07:02.80 ID:pyzNwXiR.net]
看板に偽りありだね。effortinlineじゃん。

379 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 19:52:12.81 ID:xR1wQeYt.net]
>>363
ありがとうございます

インライン展開されたかどうかは一般的にはアセンブリコードを見ないとわからないようで
VSで吐いて頑張って見てみましたが、stdコンテナのせいか複雑すぎて自分にはワケワカメですた

380 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 22:17:34.05 ID:YJ91Wm1P.net]
>>367
そりゃできないもんはしょうがないだろ
再帰はネスト8まで(変更可)できるみたいだし

381 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 22:54:03.85 ID:pyzNwXiR.net]
>>369
出来ないならforceと名乗るなと言う主張なのだが。

382 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 23:04:16.53 ID:YJ91Wm1P.net]
あすぺの方かな?

383 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 00:53:31.97 ID:/tqLaLx+.net]
__enforce_inline_if_possible

384 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 01:27:57.22 ID:aAIJ30cE.net]
初心者質問で申し訳ないんだがプリミティブな型(配列とかではない)をわざわざ参照やポインタで渡す利点って何?
でかいクラスとかベクタは寝私じゃまずいんだろうけど

ベストプラクティス集みたいなのが知りたい

385 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 01:32:24.06 ID:kkml9wFg.net]
>>373
出力を(戻り値としてではなく)受け取りたい場合とか

386 名前:デフォルトの名無しさん [2015/11/03(火) 08:11:12.58 ID:MzR8Ch2t.net]
>>373
ファイルから4byte取ってint値を返す関数みたいな、
関数の返す値がintの全範囲を取りうる上に、
別にエラーフラグも欲しい場合とか。

結果値とエラーフラグの構造体ってのも座りが悪い気がする故。

387 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 08:50:54.22 ID:LsPLW4EI.net]
そんなクソな理由なら
もう言語仕様にdestructuring入れちまえよ



388 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 13:42:32.87 ID:cBt+bdl5.net]
まぁそういうわけのわからないものは入れないってのがCのポリシーだからな

389 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 17:39:36.79 ID:BAZ2T+2b.net]
>>373
Int型のデータを4byte分のchar型領域に格納したい時とか

390 名前:デフォルトの名無しさん [2015/11/03(火) 20:35:08.57 ID:Xgba2yKF.net]
> 寝私

ね・・・値渡し?

391 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:10:03.53 ID:f9WhIZl3.net]
良く読解できたな
俺は何のことだかさっぱり分らんかったわ
ネワタシね

392 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 22:44:59.85 ID:tQp1seHW.net]
い・・・引数
ね・・・値渡し

393 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 00:07:29.19 ID:lNTSrs7r.net]
ああなるほど、そういう事か
> ねわたし

394 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 00:09:39.58 ID:lNTSrs7r.net]
いんすうって読んでる人には会ったことあるけど、ねわたしは初めてだわ

395 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 10:11:00.23 ID:knfKdYCP.net]
 
米Microsoft社 まいくろそふと

  クラウド 負け組宣言 まけぐみ

OneDrive「無制限」廃止

        goo.gl/vyy1PO

 

396 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 10:23:47.98 ID:WTQazYun.net]
定数は、

ていすう?
じょうすう?

397 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 10:35:27.81 ID:anjRIvjf.net]
さだかず



398 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 10:41:49.13 ID:JtLiF9NW.net]
誰だよ

399 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:07:21.77 ID:BxtwdD3S.net]
local layer = cc.Layer:create() -- レイヤーを作成
local texture = cc.Director:getInstance():getTextureCache():addImage("texture.png")


cocos2dxのC++なのですが、セミコロンの意味がよくわかりません。
セミコロンの後に関数を書くような記述って一般的なC++でもありますか?cocosが特別なだけでしょうか?

400 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:09:52.06 ID:BxtwdD3S.net]
すみません。コロンでした。

401 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:14:51.93 ID:v71WI/Wg.net]
それc++じゃなくてluaじゃね?w

402 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:16:02.64 ID:+TsKcPkL.net]
>>388
それC++じゃなくてluaじゃね?

403 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:16:55.52 ID:+TsKcPkL.net]
一分以上遅くまるかぶりした…

404 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:18:12.36 ID:v71WI/Wg.net]
丸かぶりやめーやwww
連投した思ったわw

405 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 19:32:54.97 ID:S5IgxevX.net]
この被り方はやるなw

406 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 20:24:49.37 ID:T4zkVKip.net]
ワロタ
草一個の差かよ

407 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 21:19:20.53 ID:lblQBd0R.net]
それにc++とC++ w



408 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 21:25:46.25 ID:+TsKcPkL.net]
>>393
すまんw

書き込む直前にスレ更新して未読メッセージを一覧表示する機能があれば、この丸かぶりは俺だけのもんだったんや…

409 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 01:49:10.60 ID:82c/dtbv.net]
例外使用で
例外がどこから発生したかを調べる定石ってなんかありますか?
スルーする型に発生した場所の情報を埋め込むとか?

410 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 02:11:58.70 ID:7H52eTq5.net]
>>398
埋め込むほかに無いと思うんだけど、それで何か問題でも?

411 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 02:18:06.51 ID:PhAaiQpi.net]
whatに入れとけば事足りるよね
そんな色んな所から例外出るわけでもないし
コールスタック欲しくてデバッガ使えるなら例外発生時のbreak入れれば

412 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 07:42:58.68 ID:82c/dtbv.net]
whatという機構があったんですね、知りませんでした、ありがとうございます

>>399
↑のようなことも知らなかったので・・・

413 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 12:57:38.82 ID:5OTArlnR.net]
What?!

414 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 22:52:44.46 ID:PcJjmoGr.net]
まあ、__FILE__と__LINE__を保持っておけば良いんじゃね?

415 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 05:08:13.90 ID:13F/39Al.net]
このスレってスキル高い人多そうだけど、そういう

416 名前:人が
アプリケーションの開発力も高いとは限らないもんでしょうか?
[]
[ここ壊れてます]

417 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 08:32:12.74 ID:mDm5qU1u.net]
アプリケーションの開発で重要なのは、開発カより例えば >>404 で自分が欲しい答えをちゃんと返せる様な質問をする能力



418 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 09:17:42.53 ID:XiUv/MWJ.net]
数学板から誘導されてきました

下記の組み合わせ最適化問題を解きたいのですが、計算量が膨大になるため、効率のよい解き方を探しています
C++で実装しているとはいえ、こちらで聞くのが正しいかわかりませんが、お力をお貸しいただけますと幸いです

【問題】

■前提
・テストを控えるP人の学生がおり、同じ塾に所属している
・テストはN科目ある
テストの集合をTと表記し、各テストをT_n (n=1,2,...,N)と表記する
・塾は各科目に対してM通りの強化学習授業を用意している
科目nに対する強化学習授業の集合をC_nと表記し、各強化学習授業をC_nm (m=1,2,...,M)と表記する
・C_nmの実施により、学生p (p=1,2,...,P)はテストT_nの点数がe_nm_p 点あがる

■問題
塾は各科目の強化学習授業を一回ずつ実施する。つまり、n個の強化学習授業の集合C_n (n=1,2,...,N)から一つずつ選んで、N回の強化学習授業を行う。
塾としては、N回の強化学習授業による点数上昇がE点を超える人数を最大化したい
この時、どのようなアルゴリズムで強化学習授業の組み合わせを選べばよいか


全探索をすると解けるのですが、NとMが大きくなると組み合わせが膨大になります
N=10,M=10くらいを想定しておりますので、これを全探索するとなると不可能です
何かヒューリスティックな解き方はありますでしょうか

よろしくお願いいたします

419 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 12:00:33.53 ID:0KPezM4w.net]
すべての事象が独立してるのだから単純なタスク分割&スレッド化で十分。

420 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 12:04:40.36 ID:G66S+Nhf.net]
スレ違いの気はするがとりあえず。

王道の分枝限定法を使うとこんな感じ。
まず緩和問題を作る。学生p全員に同じC_nmを実施するという制約を外すと、この問題は
簡単に解くことができる。(単純にpn毎に最大のe_nm_pを選んでいけばよい)
これが解の上界になる。(これより良い解は存在しない)
まず何かひとつ実行可能解を求めて、これを暫定解とする。
解の探索は科目毎の授業を順次固定していく作業になるが、ある科目nの授業をmにしようと
した際、未決定の科目についての緩和部分解を加えても暫定解より良い値が得られない
のであれば、それ以上の探索を打ち切ることができる。
全科目の授業が決定した時点でそれが以前の暫定解より良ければ新たな暫定解とする。

nの探索順序を決めて次数M深さNの探索木を考えた場合は、下の方から緩和部分解を
求めておけば比較的簡単にできる。
nの順序や探索順序(深さ優先、幅優先等)など検討する余地はあるけど。

421 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 14:00:20.34 ID:XiUv/MWJ.net]
>>408
ありがとうございます
分枝限定法で実装してみたいと思います

某所で質問した際には遺伝的アルゴリズムの利用が有効かもしれないと言う助言をいただいたのですが、この手の問題には有効なのでしょうか
詳しい方がおられましたらお教えいただけると嬉しいです

422 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 14:34:34.34 ID:aJXYP9QX.net]
宿題スレでやれ

423 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 16:12:16.42 ID:CNI6gO7O.net]
>>409
厳密解である必要がないなら有効だろね
まぁ遺伝アルゴというかモンテやね

424 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 17:20:47.01 ID:FO8fPt0J.net]
質問です。
STLにさまざまなものがありますが
ライブラリの使い方(文法)を覚えていく方法
一つ一つの関数の仕組みまで勉強していく方法

当然関数の仕組みまで覚えるに越した事はないのですが
初めから関数の仕組みまで覚えるべきでしょうか

425 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 18:47:37.20 ID:P638M0v0.net]
>>412
CでもC++でも何でも良いからしっかり基礎を学ぶべき。

言語やライブラリがやってるのは短縮記法を追加する事だけであって
適当に書いたらあとは勝手に効率の良いコードになるなんて事は起こらないから。
むしろ、ある程度中身が推測できてる状態で適切に書かないと簡単に効率の悪いコードになる。
vector::sizeは速いのにlist::sizeが遅くて、しかしvector::emptyとlist::emptyはどっちも速い理由は
どう実装されている筈かが分かっていれば自明だよね?

一通りポピュラーなデータ構造・アルゴリズムを自分で実装してみたら?
そうしたら計算量のオーダー見ただけで大体どんな構造してるか分かるし、
サポートされている可能性の高いオペレータも検討がつくようになるよ。
つっても配列とリストと平衡木と外部ハッシュくらい抑えればSTLの内容はカバーできるけど。

コンテナの場合はデータ構造が決まればアルゴリズムは自然と決まるから、
個別の関数の仕組みまで覚える必要は無いかな。

データ構造、重要。

426 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 18:57:28.00 ID:V1z7c7F8.net]
listはC++03までsizeの実装方法は決められてなくてC++11でO(1)になるよう決められたよ

427 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 19:06:00.19 ID:P638M0v0.net]
まじか
メンバとして値を持つ感じになるんかね。



428 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 20:01:11.90 ID:V1z7c7F8.net]
>>415
そう。
そのためにgccのlibstdc++のlistはABIが変わる
https://gcc.gnu.org/wiki/Cxx11AbiCompatibility

clangのlibc++は最初から定数オーダーで実装されてる

429 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 22:42:33.58 ID:P638M0v0.net]
>>416
なにそれ怖い
というか思ったよりあちこち変わってるのな。

まぁconfigureしてmakeする限り気には成らんけど。

430 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 00:58:02.16 ID:OJJscNiO.net]
度々すいません
>>406を解くにあたり色々試しておりまして、メモ化再帰によって計算量を減らしとくと言う方針を考えたのですが、
@計算量は大幅に減るでしょうか
Aどのような再帰関数を記述すればうまくいくでしょうか

ご教示いただけましたら幸いです

431 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 01:10:10.99 ID:OJJscNiO.net]
考えてみましたが>>418はやはり無理そうでした
お手数お掛けしました

432 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 13:04:27.46 ID:gczgyzuS.net]
学生数Pが十分大きいと仮定し、
教科学習授業mによる上昇得点がeになる人数に関する分布が正規分布に近似されると仮定する。
つまり、平均並みに得点が上る人が最も多いような普通の入力に関して解いていると仮定する。

ここで平均上昇得点をμ、標準偏差をσとすると上昇得点がEを上回る割合Pr(e>E)は以下で記述できる。
Pr(e>E)=1 - 1/2 * (1 - erf((E-μ)/(σ√2)))
この関数の最大化は、近似により、次のようになる。
erf(x)≒1 - exp(-x^2 * (4/π + ax^2) / (1 + ax^2))
Pr(e>E)≒1 - 1/2 * exp(-x^2 * (4/π + ax^2) / (1 + ax^2))
但しここでx=(E-μ)/(σ√2), a=-(8(π-3))/(3π(π-4))≒0.14
こいつを最大化すれば良いので
arg max Pr(e>E)
≒arg max x^2 * (4/π + ax^2) / (1 + ax^2)
≒arg max μ/σ …(*)

ここで各科目について総和を取った場合、μ及びσは
μ=μ_1 + μ_2 + … + μ_n
σ=√(σ_1^2 + σ_2^2 + … + σ_n^2)
となるから、σ_i^2がμ_iで近似できると仮定すれば
arg max Pr(e>E)
≒arg max μ …(**)
となる。

ここから、ヒューリスティックに解くなら
(1)まず科目別に各教科学習授業による上昇得点の平均と標準偏差を求める
(2)(**)を最大化する組み合わせを初期の解として与える
(3)得られた解について上昇得点がEを上回る人数を計算し、適宜最適解を更新する
(4)ランダムに科目を選び、その科目について教科学習授業を変更し、(*)を最大化する
(5)必要なだけループする。goto (3)

ただ、色々仮定を置いてるから実際には最適解を複数保持したりだとか焼きなまし法を使ったりだとか
工夫は必要だと思うけど。

433 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 13:26:50.84 ID:OyB7Ho6V.net]
総当たりだと計算量どのくらいになるの?

434 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:42:08.03 ID:HlEs+VqN.net]
>>420
eが科目毎の上昇点なのか全科目の合計なのか良くわからんなあ。
科目毎だとしたらEを超える確率を求めることに意味はあるんだろうか。
上昇点の合計が一番大きいものを選べば最適に近いと言っているだけにも見えるが。

435 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:53:00.18 ID:gczgyzuS.net]
>>421
んーと
生徒数P、科目数N、強化学習授業の種類が各科目ごとにM通りとすると
M種類の強化学習授業の選択をN回繰り返す試行をして、それに対しP人の生徒の上昇得点をN科目について加算するわけだから
O(M^N*P*N)
くらいじゃないかな。
N=M=10, P=1000の元でおよそ2^30回の加算。待ってりゃそのうち終わる程度の計算時間。

436 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 15:02:22.03 ID:gczgyzuS.net]
>>422
最初の3行を除いて、科目ごとの上昇得点じゃなくて全科目の合計の上昇得点について言ってる。
総和が云々の添字付きのμやσは各科目毎。
σ_i^2≒μ_iの近似で一般の正規分布ではなくポアソン分布の定理を使ってる。

437 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 17:46:23.21 ID:HlEs+VqN.net]
Pr(e>E)には授業の組み合わせがパラメータとして存在して、それぞれ異なる分布ということだよね。
とすると最適化の肝のこの部分は

>(4)ランダムに科目を選び、その科目について教科学習授業を変更し、(*)を最大化する

単純な山登りで、次に探索する方向を決定するのに計算量の軽い評価関数(*)を使うということか。
本当に目的関数を最大化する方向に進むのかどうかってのとローカルミニマムに嵌りそうなのは
気になるけど。
>>420で書いてるように焼きなまし法なりを使う必要はあるだろうね。



438 名前:デフォルトの名無しさん [2015/11/09(月) 09:56:26.57 ID:ddVcBsOP.net]
場所もわきまえず
どこでもオナニーする奴なんなの
みているこっちの身にもなってくれ
すれ違いにスルーもできないのだろうか
レベルの低い奴だな

439 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 13:18:17.88 ID:ui6/e9F0.net]
見なけりゃいいだろw
たまのスレ違いへのレスにいちいち腹立てるとか

440 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 13:35:12.41 ID:XQ/YTWqk.net]
個人的に気に入らない書き方に腹を立てるような奴に何を

441 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 14:18:52.79 ID:cYOWQcMh.net]
スルー出来ないレベルの低い奴ですという自己紹介でしょ

442 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 14:51:13.36 ID:0gQn1clE.net]
質問です

まだ実際にやったわけではないので知ったかなところがあるかもしれませんが、Linuxでのncursesと同じような働きをするものはwindowsにはないのでしょうか、、、

443 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 14:54:51.84 ID:xDt2hEwv.net]
>>430
cygwinかmsysか何か+ncursesじゃ駄目なの?

ncursesは内部でターミナルのエスケープシーケンスを使ってカーソル動かしたり画面切り替えたりしてるから、
windowsのコマンドプロンプトにそういう隠し機能が無い限りは存在し得ないと思うよ。
俺はもう面倒くさくなってオーナードローする方向に行ったけど。

444 名前:デフォルトの名無しさん [2015/11/09(月) 16:06:19.72 ID:ddVcBsOP.net]
>>427
ルサンチマン特有の考え方だな
お前は一生成功者を妬んで生きていくがいい

445 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 16:37:44.83 ID:0gQn1clE.net]
>>431
学校ではDebianを使っているのでncursesでも良いのですが、家の普段の開発環境はWindowsのconemuを使ってるのでそっちでできると助かるのです。
ないのであればWindowsではVisualC++とかを使って作るしかないのですよね

446 名前:デフォルトの名無しさん [2015/11/09(月) 17:05:28.90 ID:ddVcBsOP.net]
学校の質問は学校でしろカス

447 名前:デフォルトの名無しさん [2015/11/09(月) 17:08:40.90 ID:ddVcBsOP.net]
常識しらずの小便臭いガキはかあちゃんのおっぱいでもペロペロしてろよ



448 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 17:44:55.09 ID:xDt2hEwv.net]
>>433
ググったらconemuでncursesが使えそうだけど?
Inject ConEmuHkとANSI X3.64の2つをonにすればANSI escape sequencesが使えるって書いてある。

有効にした上で
puts("\x1b[H\x1b[J\x1b[31mHello!\x1b[0m");
ってやったらどうなる?

superuser.com/questions/561740/how-to-enable-color-options-in-conemu-similar-to-bash-terminal
https://en.wikipedia.org/wiki/ANSI_escape_code

449 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 18:12:23.70 ID:0gQn1clE.net]
>>434
そもそも学校のプログラムでそこまでやらないです。

>>436
ありがとうございます!
試してみたいと思います。

450 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 19:03:24.85 ID:0gQn1clE.net]
>>436
画面がクリアされて文字色がワインレッドになりました

451 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 19:10:29.92 ID:xDt2hEwv.net]
>>438
じゃぁncursesをインストールして使えば?
多分使えるから。

あるいはエスケープシーケンスについて調べてncursesモドキを作るとか。
自分のマシンでだけ動きゃいいんならそんなに難しくないよ。

452 名前:デフォルトの名無しさん mailto:sage [2015/11/09(月) 19:22:23.15 ID:fyLz/sBu.net]
32bit windowsならansi.sys

453 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 20:18:12.05 ID:ukRjpW0W.net]
i.imgur.com/UFmYAuK.jpg

454 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 20:49:02.48 ID:wdiN+26M.net]
iterator = 万能になったポインタ っていう掴みで悪くないかな?

455 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 21:30:42.79 ID:Tc78WGfj.net]
iteratorって必ずしもポインタじゃないだろ
どちらかってと帰納法の一般式ですといわれた方がぴんとくるんだが

456 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 21:49:23.78 ID:N9P9dKNU.net]
帰納法の一般系って数学的帰納法(あるいは超限帰納法)じゃね?
イテレータって再帰処理してるの?

457 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 21:57:04.54 ID:WDtG518P.net]
万能もポインタはスマートポインタの方で
イテレータはイテレータだろう



458 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 22:03:35.22 ID:N9P9dKNU.net]
いや、「帰納法」「一般式」だけみてアホなこといってました、すいません。
++i 自体、++(++i)みたいに考えれば帰納的だし、数学的なんちゃらは全てを数え上げることが本題でしたね。
とても恥ずかしい

459 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 22:14:12.41 ID:Q1JmCgC7.net]
数学的帰納法は帰納法ではないものの代表だと言うのに

460 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 22:51:35.10 ID:lGaCUbJ1.net]
まさに走査子。
なかなか素晴らしい訳なんじゃないかと思う。

商品を一個ずつ掴んで検査するロボットアーム

461 名前:ンたいなものをイメージすればよいのではないかと。 []
[ここ壊れてます]

462 名前:デフォルトの名無しさん [2015/11/12(木) 00:45:27.72 ID:JWXmz4jM.net]
525本

463 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 01:28:41.05 ID:/8Fe5VeX.net]
汎用になったポインタじゃね?

464 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 01:41:54.65 ID:BmfTbCza.net]
ポインタだとリンクリストはポインタの加減算で移動できない。ポインタはどういう意味で使っているか前後を見ないとわからない。

C++の思想としてはポインタに多重に持たせてる意味を参照とかコンテナとか関数オブジェクトとかイテレータとか分離して明確にした。

参照はnull参照も付け替えもできないから代替としては弱いけれど。

465 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 05:57:05.06 ID:eWqhTRW7.net]
NTSC! NTSC!

466 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 06:52:24.86 ID:Mz0/g+xS.net]
C++でどうも概念が理解しにくい言葉があるんだけどこれであってるのか?

ポインタ→メモリ上のある部分を指すもの
イテレータ→読み、書き、定数などの種類があって、かつ型を気にせずにAlgorithmなどを使うことができるもの
参照→ある変数や関数を指すもの→ポインタでも同じことできるはず?
コンテナ→ある種類に属するものを寄せ集めたもの
関数オブジェクト→?

ポインタとイテレータが違う構造なのもわかるけどイテレータがピンと来ない感じ

467 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 08:05:18.35 ID:iQ6UIi2A.net]
ポインタ→メモリ上の"場所"を指すもの
参照→メモリ上の"モノ","オブジェクト"を指すもの
イテレータ→ループを処理側ではなく状態側で切り取ってむりやりオブジェクト化したもの
コンテナ→別のオブジェクトを入れる入れ物・受け皿 複数のものをどう並べておくかで種類が分かれる
関数オブジェクト→関数を"ハードコーディング"せず間接的に記述・構築する仕組み



468 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 08:23:02.05 ID:BmfTbCza.net]
イテレータはコンテナの要素を指し、指す要素を移動できるモノ。

配列要素を指すポインタを抽象化・拡張。

469 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 08:38:17.92 ID:G83c/GIg.net]
>>455
それはコンテナのイテレータ
イテレータの概念は添字付けられたもの(可算個)全般の実装
コンテナのイテレータは、あくまでその一例

470 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 10:15:01.62 ID:GK7FZzYO.net]
イテレータとポインタを混同するっていうのって何か新鮮だな
まぁC++の場合はポインタに寄せてってるから分からんでもないが
JavaのEnumerationだとhasMoreElements()とnextElement()
JavaのIteratorだとhasNext()とnext()
C#のIEnumerator だとMoveNext()とCurrent
こーいうのも知っておけば混同しようが無いと思うけど

471 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 11:49:30.88 ID:LxPNMIkD.net]
ポインタは言語に組み込まれた機能要素で、それを使ってイテレータなどの概念を実装している。
レンズを使って望遠鏡を作るとか顕微鏡を作るとかいう関係と同様。
関数オブジェクトはなんでその文脈で出てくるのか理解できない。

472 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 12:12:47.18 ID:+BgE0e3i.net]
メンバ変数ポインタからメンバ変数の型を
取り出す方法はありますか?

struct Foo { int bar; };
struct Foo2 { mem2type<&Foo::bar>::type bar2; }

こんなイメージです

473 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 12:26:18.33 ID:9l61Vk4V.net]
>>459
decltype(Foo::bar)

474 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 12:50:44.86 ID:+BgE0e3i.net]
>>460
ありがとうございます
できればmem2type<メンバ変数ポインタ>::typeとして使用できる方法も知りたいのですが可能でしょうか?

475 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 13:25:07.11 ID:LxPNMIkD.net]
>>461
やりたいことがよく見えない。
メンバボインタを引数に渡すということであれば
template <typename R. typename T>
R memp2type(R T::* p);

という関数を宣言して、
decltype(memp2type(p));
とやればできるかな?

476 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 13:39:00.7 ]
[ここ壊れてます]

477 名前:5 ID:zAzQWwNw.net mailto: <>は使えないが

template<class T> struct mem2type_impl { typedef decltype(T) type; };
#define mem2type(v) mem2type_impl<decltype(v)>
struct Foo { int bar; };
struct Foo2 { mem2type(&Foo::bar)::type bar2; };

…目的が見えないな
[]
[ここ壊れてます]



478 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 13:40:26.70 ID:zAzQWwNw.net]
1行目間違えた
template<class T> struct mem2type_impl { typedef T type; };

479 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 13:52:08.03 ID:+BgE0e3i.net]
すみません、テンプレートを使うというよりは、
C++03の範囲で行う手段が知りたいのですが、
何か方法はありますでしょうか。

480 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 13:52:52.81 ID:zAzQWwNw.net]
BOOST_TYPEOF

481 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 14:30:10.82 ID:+BgE0e3i.net]
>>466
ありがとうございます
予想以上に大掛かりな処理が必要そうでびっくりしましたが、調べてみたいと思います

482 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 14:47:53.39 ID:zAzQWwNw.net]
>>467
使うツールセットは?
msvcやgccあたりなら特に準備しなくても動く(コンパイラの独自拡張を裏で使うので)

483 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 21:24:48.58 ID:JxIPjKjJ.net]
>>447
嘆かわしいことに機械学習の本では大概数学的帰納法の意味で帰納法と書いてある…

484 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:01:53.17 ID:VdOPydER.net]
部分特殊化の基本的な使い方じゃないの?
ためしてないけどこんな感じ

template<typename T>
struct a;

template<typename C, typename M>
struct a<M C::*> {
using mem_type = M;
};

template<typename T>
auto f(T t) -> typename a<T>::mem_type;

struct X {
double d;
};
auto f() {
using t1 = decltype(f(&X::d));
}

485 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 00:22:52.33 ID:wyADWSOf.net]
>>457
EnumerationとIterationを混同してるぞ…

486 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 00:34:21.81 ID:GGTDEwnn.net]
それに違いなんて無いぞ?
英語の話をしたいのか?

487 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 00:37:47.63 ID:gkMX52H5.net]
>>470
>>465にC++03の範囲でって書いてあるから、decltypeが使えない状況なんじゃない?



488 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 00:44:18.74 ID:wyADWSOf.net]
>>472
あるから。
enumerationは列挙。
iterationは反復。
enumerationするための手段がiterationな。
それを同じと言っても確かに問題ない事が多いけど、それなら配列へのポインタをイテレータと言っても問題ないレベルの違いな。

489 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 02:02:36.76 ID:GGTDEwnn.net]
名前の都合でしかないから
enumuratorとiteratorの両方が混在してる言語を見てみると…

Javaの場合は既に使われているEnumerationのAPIを変えることなく改善版が用意された
https://docs.oracle.com/javase/jp/6/api/java/util/Iterator.html
> public interface Iterator<E>
> コレクションの反復子です。反復子は、Java Collections Framework において Enumeration の代わりとなります。
> 反復子は、次の 2 つの点で列挙と異なります。1) 反復子を使用すると、明確なセマンティクスに基づく繰り返し処理の間に、
> 呼び出し側は基本となるコレクションから要素を削除できる。2) メソッド名が改良されている

Rubyの場合は登場時からブロック付きメソッドを「イテレータ」と表現してた経緯があり
外部イテレータを提供する(?)ときにこの名前が使われた
docs.ruby-lang.org/ja/1.9.3/class/Enumerator.html
> 要約
> each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。 また、外部イテレータとしても使えます。

迷いのない言語には片方しか用意されてない
両方を区別して使い分ける必要が無いから

490 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 02:54:36.52 ID:W9y/9ft7.net]
一般的な語意の話なら >>474 も正解。
具体的な Java や Ruby のインターフェースの話なら >>475 も正解。

話がかみ合ってないだけ。

491 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 06:46:34.15 ID:VFyva8w7.net]
この流れで一般的な語彙の話する奴がバカなだけ
違いがわかる俺カッケー君 w

492 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 08:32:09.27 ID:wyADWSOf.net]
だから>>457も見方の問題であって、iterationとenumerationを同列に扱う立場で話を始めているのに、何故ポインタとイテレータを同列に扱う見方を上から目線で小馬鹿にしてるのかがわからない、という指摘でしょ。

493 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 09:06:29.82 ID:gfKlURBY.net]
ポインタとイテレータを同列に語ったらそりゃ小馬鹿にされます(教育)

494 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 12:29:14.68 ID:wlkMWFWk.net]
ポインタもそうだが、英語のニュアンスの違いを説明するなら、
イテレーションを積み重ねたのが列挙というべき。
イテレーションは繰り返し操作の1単位という意味もあるし、
実際プログラミングはその意味のが近い。

495 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 13:20:33.94 ID:+1eGYaPq.net]
列挙の手段が反復
反復の結果が列挙

496 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/13(金) 15:32:34.62 ID:Y891nyvQ.net]
C++の使いどころってマジでどこ
ちなみにゲーム関連は他言語で間に合ってる

497 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 15:35:06.05 ID:4ohAy024.net]
組み込み



498 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 15:45:56.89 ID:cTzYhkFo.net]
なんでコンパイルが通るのか?
何故〜が出来るのか?
それは逆に言えば、コンパイラが独自で判断した結果。
ついでに言えば、コンパイルは通っても実行時エラー
が出る可能性がある。
変なアドレスにアクセスしてしまう事もある。

何故出来るのかと疑うより、疑い用の無いコードを書けば良し。

499 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 17:54:33.02 ID:jSCbd5hj.net]
>>481
つまりデータを"列挙"するために、そのデータに一定の操作を加えて"反復"させるということで、
そのデータを指し示す物がイテレータということになるのでしょうか?

500 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 18:38:26.94 ID:+1eGYaPq.net]
ただの言葉遊びに反応されても困る
まじめに考えるな

501 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 18:52:41.76 ID:jSCbd5hj.net]
>>486
コンテナを指すもの=イテレータと思って間違えないならそうします

502 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 19:41:25.51 ID:I9q4X3X4.net]
反復結果列挙!


いえ、並べただけですよ

503 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 03:13:06.25 ID:nfjsLiRt.net]
>>474>>481
はげどう
C#のIEnumeratorとか要素だけが列挙されて出てくるのや
確かに種も仕掛けもiterationっぽいがユーザーからは見えないカンジ

504 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 03:15:27.20 ID:nfjsLiRt.net]
ていうかIEnumeratorはyieldを使っても実装できるからそうすると
iteratorは何処?ここは誰?状態に個人的によくなる
怖い…

505 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 05:15:42.95 ID:iwAmPq2+.net]
列挙する手段は再帰でも構わないわけだけど、再帰を理解できない某スレの低脳はどうするんだろう?

506 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 12:52:37.77 ID:FyDiFGtK.net]
皆さんはライブラリの関数は大体覚えているんですかね?

507 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 12:59:51.14 ID:FyDiFGtK.net]
まだ学生なのですが
ctype time string iomanip iostream fstreamの関数を覚えるので精一杯感があって
実際の仕事をされている方々もリファレンスを見たりしながらやるのでしょうか?



508 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 13:34:53.75 ID:Fh2qjyRJ.net]
基本的には何も覚えないよ
他の言語もいろいろやってると「この時はこういうの」
っていうクラスなり関数なりが思いつくから
それを探して使うだけ
クラスライブラリの全容を学ばなきゃいけないのかと最初は思うだろうけど
必要に応じて学んでいけばそれで十分
もちろん、先に全容を掴んでいればそれはそれで君にとって有利ではある

509 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 13:50:41.11 ID:DASkv8IC.net]
よく使うクラス(例えばstringとか)なら覚えちゃってるけど
基本はリファレンス検索したりヘッダー検索したりググったりして解決ですよ

510 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 14:10:57.22 ID:AK9Sm4Mt.net]
カテゴリレベルでのどういった道具があるかは知っておいたほうがいいけど詳細までの丸暗記は無意味だな
詳細は>>495みたいによく使うものなら自然に覚えていくしめったに使わないものなら無理に覚えておく必要がない

511 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 15:30:41.71 ID:FyDiFGtK.net]
では、あれをしたいという時にそのライブラリと関数がわかるくらいでいいのでしょうか、引数まで覚えることもないのでしょうか?

512 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 16:20:33.76 ID:DASkv8IC.net]
覚えなくていい
テストに出るなら頑張って覚えた方がいいがw

513 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 16:22:40.30 ID:iX1kSKz7.net]
ありがとうございます!

514 名前: ◆tAo.kQ2STk mailto:sage [2015/11/14(土) 16:26:49.52 ID:1e4erM+I.net]
しょっちゅう使う関数なら自然と引数の型やその順序まで覚えてしまうものだけど、
基本的には「あれをしたい」って思った時にそのライブラリというかカテゴリの名前が分かりゃそれで十分かな。
ググれるから。

それに一つの環境で使える関数群を全部覚えたからと言って、次の仕事で使えるとは限らないしね。
前の仕事ではCreateWindowEx関数を使ってたけど
次の仕事ではgtk_window_new関数が使われてた、とか
そもそも仕事に使う言語がc++からJava Scriptに変わったとか。

ただ、標準ライブラリに何が用意されてるのか位はさらっと目を通しておいたほうがいい。
よほど特別な理由がない限り、標準的な関数やクラスを自分で実装するのは2つの理由で無駄だから。
1つ目の理由は、もちろん既にあるものを自分で実装するのが時間の無駄だってこと。
バグ取りなんかも必要だし、よっぽど腕が良くないと既存の物より高速に動作する物は作れない。
2つ目の理由は、そのコードを読んだ人に「このVariableArrayクラスはstd::vectorクラスと何が違うんだろう?」って調べる事を強要するから
他人の時間を無駄にしてしまうってこと。

515 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 16:39:01.71 ID:LsNNjMuZ.net]
仕事でGTK使うことなんてあるの?

516 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 16:57:20.04 ID:nfjsLiRt.net]
Aを覚えるよりBを覚えたほうが良い ⇒ ワカル
Aは覚えなくていい ⇒ ワカラン…

特にペナルティーとか何かと引き換えとかが無いなら、記憶する方が良いに決まっている

517 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:01:26.38 ID:DASkv8IC.net]
そら時間をかけずに覚えられるなら覚えた方がいいさ
でもそんな奴は相談に来ないだろ



518 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:03:36.95 ID:KefGJNy1.net]
まぁ、多すぎて覚えられないという前提がなければ、全部覚えたほうがいい
ただ普通の開発者はプロでも、よく使うとこと、今よく使ってるとこくらいしか覚えてない

俺はSTLのalgorithm周りやら、boostのublasなんかは特にリファレンスしなくても使えるが、
iostreamとかstringとかはかなりメジャーだろうけど俺はいちいた覚えてないから使うときは調べる

519 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:04:32.34 ID:/ti03Yhd.net]
時間を引き換えにせず覚える事の出来る人間ばなれした優秀なやつか、はたまた時間を無限のように感じているニートか

>>504
それは単によく使うから覚えてるだけだろ

520 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:05:28.30 ID:KefGJNy1.net]
あれioは標準入出力だから覚えてるか
すまんファイル入出力を覚えてないの間違いだたofstreamみたいなやつ

521 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:06:16.95 ID:KefGJNy1.net]
>>505
そう、よく使うから覚えてるだけ
それで充分だと俺は思うが…

522 名前:デフォルトの名無しさん [2015/11/14(土) 17:11:41.12 ID:hcV3aB4u.net]
ハッカーなら覚えていて当然だけど
一般人なら覚えてなくていいよ
テストで100点取

523 名前:驍フとは違うんだからね []
[ここ壊れてます]

524 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 17:29:13.74 ID:nfjsLiRt.net]
何を真とするかの基準も無く
ただ易きに流れるだけの人に仕様を満足する仕事は期待できない…
期待できないのだ…!

525 名前:uy ◆Qawu9.2l1E [2015/11/14(土) 18:02:46.08 ID:Shexr7Cq.net]
今10分くらいで全部覚えてきた
www.cppll.jp/cppreference/index.html

この程度も覚えられないとか甘え過ぎ
ダウンロードボタンあるからDLしてコンビニいって全部印刷オススメ

526 名前:デフォルトの名無しさん [2015/11/14(土) 18:15:33.61 ID:hcV3aB4u.net]
日本語で覚えるとかありえないしし(ププププ

527 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 18:21:18.79 ID:/ti03Yhd.net]
カスに構うなよ



528 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 18:47:38.72 ID:Va7f2G7P.net]
>>509
> 何を真とするかの基準も無く

吠えてるだけだよな


お前って

529 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 18:57:41.40 ID:cBGEdvst.net]
そりゃ覚えた方が良いに決まってるけど、覚える事を最優先にする必要は無いよねー
目的は何かを作る事であるわけですから、作る方に労力使う方がイイよねー
そして、その過程でよく使うものは、そのうち嫌でも覚えちゃうものさー

530 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:46:32.92 ID:vZ7mka6Q.net]
でもダメな奴のソースコードって、標準で用意されてるのに使わない奴多いよね。
他の言語の知識がないのなら、一覧表くらい眺めてみてもよいのでは?

531 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:06:52.07 ID:DASkv8IC.net]
そりゃいざ必要なときに調べもしなきゃ

532 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:21:01.67 ID:KefGJNy1.net]
>>515
これはあるあるだな
自前でforループ回さないと死ぬ病気なんだと思ってる

533 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:38:30.93 ID:7qU/f9+6.net]
そういう奴に限って「ライブラリは信用できない」とか言う

534 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:40:29.09 ID:kiB3B4ET.net]
>>517
ごめんよ
イテレータってよくわからんから使いたくないねん(´・ω・`)

535 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:49:29.91 ID:lT+7Yk9s.net]
そんな奴ほど自分のコードのこだわり強いんだよな…

536 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:51:06.70 ID:KefGJNy1.net]
>>519
会社で言われたら戦慄する

537 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:56:08.58 ID:T7cDyZTE.net]
>>519
ちょ



538 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 21:20:44.80 ID:9QHlt6TY.net]
まぁ外部イテレータに関しては無理に使う必要性を感じないのも事実
添え字でアクセスできるコンテナに対してはそれで指してやりたい

539 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 21:23:41.49 ID:kiB3B4ET.net]
逆にイテレータを使うメリットってなんやろ
移植性?コンテナ変えたい場合にサクッと変えられるとか?

540 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 21:32:08.36 ID:P7eSj/oG.net]
>>524
ある場合ではイテレータと言う名前を用いること自体が嬉しい
例えばsetやmapの中身を順番に触って行きたいとき
イテレータという概念でもなきゃメソッド名に困ることになる

それ以外で聞いたことあるのは「順次アクセスさせたいだけなのに
添え字用変数を容易したりケアしたりしたくない」みたいな話

541 名前:.パンティーガァル mailto:sage [2015/11/14(土) 23:47:52.47 ID:KR6EjTDB.net]
>>524
ない
コンテナを変えなきゃいけない場合ってのは
結局全体の構造を見直さなければならないってことだ
いずれにせよサクッとは変えられない

542 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 00:56:51.15 ID:rMAuDQml.net]
> ハッカーなら覚えていて当然だけど
違うよ
本物のハッカー的気質が強い人にとっては本質を正しく理解することが重要で
表に出ている部分をただ覚えるようなことには意味を見出さない
だから規格の丸暗記といった方向での知識量とかは逆にたいしたことなかったりする

543 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 01:01:18.56 ID:81QugJpf.net]
余談だけどイテレータはコンテナの種類に依らず
一様な方法でコンテナの中身にアクセスする手段じゃん?

たとえばranged-forマップのイテレータから直接取り出せるのはキーと値のペアなんだけど
for(const auto& a : container){
(*it).second
って書かないといけないからstd::pairにoperator Type()みたいな演算子があると嬉しいんだけどヤバいかな
ideone.com/eH1XCR

544 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 01:02:30.06 ID:81QugJpf.net]
途中送信スマソ
for(const auto& a : container)
{
cout << a.second << endl;
}
って書くとcontainerの変更に弱いよねって話です

545 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 01:46:33.53 ID:9kIFKVss.net]
お前らgofのiteratorパターン読み直せ

546 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 02:08:16.81 ID:JMNPWmcH.net]
>>528
>(*it).secondって書かないといけない

お前が勝手にそう思いこんでるだけ
どうしてもpairだけ特別扱いしたいなら勝手に変換してろ
ideone.com/egCx9V

547 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 02:42:37.11 ID:etzO6ADE.net]
iterator使ってたら
std::map<k,v>からstd::vector<std::pair<k,v>> に変えたところでアクセス方法変わらないよね?
コンテナの変更に弱くなるってどういう事?



548 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 02:52:02.64 ID:81QugJpf.net]
>>531
そりゃ拡張性のためにあらかじめ変換関数を用意するならなんでも行けるよ

queueにもbegin()とか用意してくれたらな,とかたまに思うんだけど
設計思想には反するんだろうな

549 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 02:54:47.49 ID:JMNPWmcH.net]
>>532
解説しよう
「要素Tを取り出すのにa.secondと書くとvectorに変更するときに修正が必要になるので変更に弱い」という意味なのだ
528はオツムが弱いので連想配列とシーケンシャルコンテナーの違いが理解できなかったのだ

550 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 03:05:58.39 ID:etzO6ADE.net]
コンテナの中身変えといて中身の扱い方が変わるから変更に弱いって言ってるってこと?
何言ってるのかわからんのだけど

551 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 03:16:49.04 ID:9kIFKVss.net]
>>535
イテレータの意味わからんやつに説明しても無駄
何を抽象化してるのか理解してないんだからいくら説明しても無駄

552 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 03:24:17.91 ID:81QugJpf.net]
よく考えなくても自分が悪かったよ すまんかった
std::mapじゃなくてstd::set使えばいい話だった

553 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/15(日) 06:08:04.15 ID:BtG1eDoL.net]
(′・ω・`)?w

554 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 08:51:12.02 ID:V8NTA7lA.net]
東方のゲームエンジンって全部ゲームエンジンで作ってるんだろうか
それとも弾幕部分だけ?
あとゲームエンジンって自作言語→c++に変換する物なの?それとも直接実行ファイル?

555 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 09:01:47.86 ID:Us7uvw8P.net]
>>539
弾幕部分はzun自作の"弾幕スクリプト"で書いてるらしい

「東方 弾幕スクリプト」でググれ

556 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 09:21:54.05 ID:V8NTA7lA.net]
>>540
弾幕だけなんですね
ただ、自作言語をどうしているのか書いてなかったので知ってる方いますか?
直接実行ファイルにしてるのか、c++コードに変換してるのか

557 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 11:25:49.49 ID:a/0hbCSJ.net]
>>541
弾幕スクリプトは初めて知ったけど、C++のコードに変換することはありえないよ
なんでゲーム屋がこういうのをスクリプトや外部データにするかって、ハードコードしたら敵の動きを
確認するためだけに毎回ビルドしなきゃならなくなるからだ
多分ステージのロード時とかボス戦前とかにゲームエンジン(C/C++)がパースしてるんじゃないか



558 名前:デフォルトの名無しさん [2015/11/15(日) 12:00:25.29 ID:V8NTA7lA.net]
毎回ビルドしたら何か問題あるのでしょうか?
ビルドって難しい事じゃないですし

559 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 12:10:46.73 ID:Q5DXGuJU.net]
見てないから推測だが
単にデバッグ効率・ゲームデザイン効率の問題と思われる
ビルドしてたらゲーム立ち上げ直してデバッグしたいシーン

560 名前:までゲームを進め直さなきゃならなくなる
ランタイムでスクリプトが読み込めればゲーム中デバッグコマンドで設定変えてみることが出来る
[]
[ここ壊れてます]

561 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 12:18:17.96 ID:ZxsxGSS5.net]
DSLを使う目的はビルド時間だけじゃないからありえんってことはない。
ただまぁ、C++のコードにコンバートするのはかえって面倒くさかったりするんで
普通はバイトコード使うだろうな。

>多分ステージのロード時とかボス戦前とかにゲームエンジン(C/C++)がパースしてるんじゃないか

これ実現するなら前提としてバイトコード使うことになるけど、ユーザーにスクリプトを
変更させたりするんでなければリリースするバイナリにパーザを含める必要もない。

562 名前:デフォルトの名無しさん [2015/11/15(日) 12:20:15.34 ID:V8NTA7lA.net]
つまり独自言語テキスト➡独自言語バイナリ➡プログラミングが読み込むって事ですかね

563 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 12:45:49.31 ID:a/0hbCSJ.net]
>>546
多分そうだと思う
まぁ生のテキストかバイトコードかは知らんけど、ゲームバランス調整するために
ちょっと弾幕の出方を変えてみる、っていうごとに「毎回ビルド」っていうのはシャレにならんよ
著しく生産性が下がる
2Dのシューティングとはいえ、インクリメンタルリンクとかプリコンパイルドヘッダの恩恵を入れても
絶対ビルドが数秒で終わるような規模じゃない

特にまずいのは、そういうデータをヘッダに書いてる場合、書き換えたらそのヘッダを
インクルードしてるソース全部コンパイルされるんで
「この弾の出方だとちょっと美しくないなぁ、角度をもう少しずらしてみよう」で数分〜十数分待ち
発狂するだろw

564 名前:デフォルトの名無しさん [2015/11/15(日) 12:51:31.67 ID:V8NTA7lA.net]
ビルドってそんな掛かるのか
3秒もかからないものだと思ってた

565 名前:デフォルトの名無しさん [2015/11/15(日) 12:51:32.34 ID:V8NTA7lA.net]
ビルドってそんな掛かるのか
3秒もかからないものだと思ってた

566 名前:デフォルトの名無しさん [2015/11/15(日) 12:52:15.98 ID:V8NTA7lA.net]
連続送信すまん

567 名前:デフォルトの名無しさん [2015/11/15(日) 12:52:16.54 ID:V8NTA7lA.net]
連続送信すまん



568 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 12:57:45.86 ID:a/0hbCSJ.net]
ブラウザどうなっとんだw
いやまぁ自分が使ってるマシンがしょぼいせいもあるかもしれんけど、
多分東方シリーズのソースってなると結構な規模じゃないかねぇ(ソース資産多いだろうし)
数万〜十数万行くらいはあるんじゃないか

569 名前:デフォルトの名無しさん [2015/11/15(日) 13:18:28.52 ID:sKF/cfhp.net]
むしろスクリプトでリアルタイムで弾幕を調整することが目的だろうな
ゲームはバランス調整とかが面白さのカギだからな

570 名前:デフォルトの名無しさん [2015/11/15(日) 13:32:37.24 ID:V8NTA7lA.net]
あ、またおかしくなってた
リアルタイムで出来るようにしてるのか
ソースコード凄い量だな
俺は長くても2万行しか書かないからそこまで時間掛かるとは思ってなかった

571 名前:デフォルトの名無しさん [2015/11/15(日) 13:36:06.34 ID:sKF/cfhp.net]
調整用のノブとかレバーとかがあって
それを動かすことで弾幕を調整できるようになってるっぽい

572 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 13:48:22.71 ID:gyJr19GH.net]
> 俺は長くても2万行しか書かない
> 3秒もかからないものだと思ってた
嘘つき ID:V8NTA7lA は死ね
てか嘘つきって何でこんな意味のない嘘をつくんだろう

573 名前:デフォルトの名無しさん [2015/11/15(日) 13:51:26.35 ID:V8NTA7lA.net]
え。。
dxlibのラッパー合わせたらそのくらいあるけど、3秒かからないよ

574 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 13:58:34.66 ID:4LMfzWCO.net]
弾幕スクリプトとやらが何時から導入されたのか知らんが結構歴史長いし、
今は数秒〜十数秒程度でコンパイル出来るけど昔はもっとかかったんじゃないのか

575 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 14:10:17.13 ID:IT6gF8gc.net]
昔は数百行のプログラムでもコーヒー入れていっぷくできていたが、最近は一瞬だな
make -jなんてしたら数万行でも一瞬

576 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 14:10:32.11 ID:ZxsxGSS5.net]
そもそも、全体のコード量が何十万行あったとしても更新された分しかコンパイルする
必要ないだろうに。まさか自動生成されるヘッダを全部のソースにインクルードするような
アホなつくりをするとも思えんし。

577 名前:デフォルトの名無しさん [2015/11/15(日) 14:15:30.09 ID:sKF/cfhp.net]
例えば音楽作るのだって聞きながら作るよな
いちいち全部wavにしてから視聴しない
それのゲーム版だと思えばいい



578 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 15:57:42.64 ID:K62AMl2G.net]
そのための分割コンパイルですよ

579 名前:デフォルトの名無しさん mailto:sage [2015/11/15(日) 17:26:01.43 ID:R15Ww/xo.net]
>>542
ドメイン特化スクリプトの目的は大抵特定ロジックを試行錯誤しながら書く際の効率を高めるため。
ソースコードに変換するか、スクリプトもしくはバイトコードを解釈するランタイムを埋め込むかの違いは速度がクリティカルなら前者、デザイナーみたいな人間を使った分業開発なら後者だけど、そうでないならどちらでも大した差はない。
個人開発ならその時の気分が大きいだろう。

580 名前:.パンティーガァル mailto:sage [2015/11/15(日) 18:12:46.07 ID:WZ0Q9prU.net]
>>562
左様
さらに言うならそういう用途ならインライン展開しまくり&コンパイル時間掛かりまくりのC++なんか捨てて
最初からCで逝けってこったw

581 名前:uy [2015/11/15(日) 19:14:25.53 ID:VVKd20XZ.net]
c++で全部書くわけないじゃん

c++がスクリプトと比べて何が劣ってるのか理解すべき

582 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 01:44:05.54 ID:7yHHnP/U.net]
職種別、資格別、スキル別の平均最低月給リスト
jobinjapan.jp/cate/
全掲載求人109,160件の平均最低月給195,800円

C++の求人 の平均最低月給216,000円
jobinjapan.jp/job-listing/keyword-cpp-pg.html

583 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 02:01:56.94 ID:4p5ov1Aj.net]
安いなー。手取りいくらになるんだ

584 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 16:30:49.38 ID:zms46H5z.net]
日本はC++が分野ごと息絶えてるって聞くけど
ここのコアな住人もプロでやってる人は少ないんじゃないの

585 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 19:03:02.69 ID:nM/1wF+C.net]
確かに少ないかもな
そもそもC++書けるってやつが少ないかも
そのおかげで俺みたいな個人事業主にも発注があって助かります

586 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 20:42:59.28 ID:TvcCpGLD.net]
X[i][j][k][l] = A[i][v][w][x] * B[j][v][y] * C[k][w][y][z] * D[l][x][z]

のような多次元行列積を最速でやりたいと思ったらさ、右辺がただの行列積の連続になるように添字の順番を入れ替えてBLASみたいな線形代数演算のルーチンに投げるのが一番だよな?

でもそのやり方では、各添字が1〜Nだとすると中間生成物の多次元行列のサイズが最大でNの5乗になる
それがメモリ的にキツい場合はどのように実装したら良いだろう?
10個の変数を愚直にループで回すくらいしか思い付かないんだが、これは最悪だよな?

587 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 21:58:37.56 ID:EYXzMg1y.net]
スレ違いだが、そんなレベルなら何も考えずにライブラリ使うのがいいんじゃないか?



588 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 22:44:51.08 ID:TvICL1RJ.net]
>>571
どのライブラリ?
添字の縮約を一度にできるライブラリがあるの?

まぁアルゴリズムスレで聞くべき話題だったと思うので、移動することにします
失礼

589 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 22:51:10.04 ID:skOZM3LY.net]
アルゴリズムスレなんてなくね

どこに移動する気なんだ

590 名前:デフォルトの名無しさん mailto:sage [2015/11/16(月) 22:59:27.02 ID:+K0mRhMl.net]
データ構造,アルゴリズム,デザインパターン総合スレ 2
peace.2ch.net/test/read.cgi/tech/1362301811/

591 名前:デフォルトの名無しさん mailto:sagete [2015/11/17(火) 01:34:54.58 ID:mTy4uFbL.net]
これはどの程度真に受けていいのでしょうか?
monobook.org/wiki/Bjarne_Stroustrup_%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%93%E3%83%A5%E3%83%BC

592 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 02:00:19.38 ID:vhPJDvYj.net]
>>575
日本語が読めれば解ると思うんだけど何が知りたいの?

593 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 02:00:46.79 ID:HbGe248J.net]
こういうバカも実在するんだ

594 名前:デフォルトの名無しさん mailto:sagete [2015/11/17(火) 03:38:13.51 ID:mTy4uFbL.net]
答えられない人には訊いてないです

595 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 03:45:22.76 ID:hCC9Eug4.net]
真に受けてはダメです

596 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 03:45:25.60 ID:+Z1Wb6Hb.net]
>>570
メモリも時間計算量も抑えたいなら自分で計算すればいいじゃん
どちらにしろインプレイスで処理できないならメモリは必須だろ

597 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 03:58:20.84 ID:Hk9c0pnU.net]
明らかにネタだけど、真に受けていいのかという問いかけには、じゃあ誰の回答も真に受けていいのかという話になるので、あなたが自分で考えて納得する以外に方法はない。

じゃあ君はどう思う?それが唯一君が納得する答えだよ。



598 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 07:47:43.98 ID:vhPJDvYj.net]
ジョーク文書って書いてあるのにどの程度真に受けていいのかとか日本語読めないとしか思えないんだけど?

599 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 11:03:02.19 ID:2Ns9WBgW.net]
つまり
「ジョークと書いてあるので真に受けてはいけない」
と答えれば満足行くわけかね

600 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 13:08:57.39 ID:0utt7BoB.net]
ジョークではあるけど、戒めでも有るから、初心者が読むには良い文章なんだけどな
C++は良い部分だけを上手く活用してなんぼの言語だからね

601 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 13:24:06.90 ID:ZdmPhf6a.net]
もうC++みたいなクソ言語に初心者を巻き込むなよ
ジジイたちのオナニ言語で勝手に俺スゲーしてろ

602 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 14:36:17.09 ID:5fHlJfRB.net]
処理が早いって聞いて学んでるけど正直やめたい

603 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 14:45:23.69 ID:0utt7BoB.net]
他の言語も同様程度には複雑だから、何やっても一緒だぞ

604 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 14:48:02.58 ID:JCt1lq+9.net]
んなこたーない
他言語はもっと単純
C++は「意味のない煩雑さ」が多い言語

605 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 14:50:50.48 ID:Xq9knrfv.net]
さて、そんな皆さんにご用意したのが、この

C

です!

606 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 15:14:32.69 ID:HbGe248J.net]
>>588
例えばどの辺が「意味のない煩雑さ」だと?
その煩雑さとやらが何故そうなったのか、あなたが意味を見出せない、
或いは、意味を見出そうしないだけなんじゃないですかね

607 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 15:15:46.82 ID:/zPinGq0.net]
「自分には理解できない」
が抜けてるだけだろ



608 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 15:26:20.33 ID:1Xdfjtqs.net]
ヤバい面白い。
本人の反論文書(なんたらopen channel)も読んでみたいけど見つからん。

609 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 15:39:40.06 ID:PebPi9W7.net]
ttps://m.srad.jp/~taro-nishino/journal/503243
これかな

610 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 16:25:51.50 ID:1Xdfjtqs.net]
>>593
thx!

611 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 17:31:40.90 ID:5VMzV+9C.net]
>>569
個人事業主でやっていけてるってことはそれなりに高スキルとみた
でもうちみたいなお固い企業だとそういうとこに発注できないんだよなぁ
リスクがどうだの信用照会は通るのかだの・・・
下手なとこに発注するよりよほど良いはずなのに
特にC++バリバリ使うような案件だと

612 名前:デフォルトの名無しさん [2015/11/17(火) 19:00:51.79 ID:+c9tLHNn.net]
分厚い8000円くらいするC++リファレンス本を購入しそうなターゲット層の住むスレ

613 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 20:23:22.10 ID:uYtrfvr1.net]
>>595
腕の良し悪しよりも安

614 名前:心(ゼニ)が大事なんや
フリーランサーは賠責保険に加入するべきなんや


「ウチの案件を受ける場合はまずコレコレの会社のこの保険に加入してください」
[]
[ここ壊れてます]

615 名前:uy ◆Qawu9.2l1E [2015/11/17(火) 20:39:26.45 ID:ZbjRFgjU.net]
>>590
peace.2ch.net/test/read.cgi/tech/1420379468/950-957



616 名前:デフォルトの名無しさん mailto:sage [2015/11/17(火) 21:45:04.42 ID:5VMzV+9C.net]
>>597
なんだかなって思うわ
まぁ今更な話題だが

617 名前:デフォルトの名無しさん [2015/11/18(水) 22:45:50.07 ID:oenAzU52.net]
>>596
いいじゃん、なりふり構うために耳ふさいでるバカいないってことなら



618 名前:デフォルトの名無しさん [2015/11/19(木) 01:26:10.66 ID:6x5+bHoL.net]
リファレンスを書籍化されても、それって単なる更新の止まったC++入門サイトのようなものだから

619 名前:デフォルトの名無しさん mailto:sage [2015/11/19(木) 06:18:47.24 ID:ApowG8Dl.net]
リファレンスなら
en.cppreference.com

www.cplusplus.com
でいいよな
本は検索もできなくて使い勝手悪いし

620 名前:デフォルトの名無しさん [2015/11/19(木) 08:58:46.38 ID:JIJtk7D/.net]
ブラッド・コックスとトム・ラブがObjective-Cを作り「この言語はCのメモリ安全性とSmalltalkの高速性を合わせたものだ」と宣言する。
現代の歴史家は2人が失読症ではないかと疑っている。
https://twitter.com/okdshin/status/666903312151613440

621 名前:デフォルトの名無しさん mailto:sage [2015/11/19(木) 18:58:37.37 ID:cVDALBAT.net]
どうしようもないクソ言語ということですね

622 名前:デフォルトの名無しさん mailto:sage [2015/11/19(木) 21:19:35.24 ID:Q69wQH7X.net]
俺も他でレスしちゃったけどそれマルチ
内容はジョーク文書だった

623 名前:デフォルトの名無しさん mailto:sage [2015/11/19(木) 23:07:11.25 ID:dLb/5HwU.net]
リファレンスと言ったら規格
それ以外は参考書

624 名前:デフォルトの名無しさん mailto:sage [2015/11/19(木) 23:11:53.81 ID:Q69wQH7X.net]
参考書はreference bookだよ

625 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/20(金) 00:06:42.29 ID:QlSu2hgW.net]
C++の多種多様な機能は、別に良いんだけど
2つの使われない理由を挙げてみよう

1、多くのアプリは動的言語の速度で間に合ってしまう
2、C++を使う時は最高速のコードを組みたい時、
  そういう時に、C++の何を使ったらどのくらい遅いか調べるのも面倒なので
  結局C++の機能の殆どを使わないのでは?


静的言語でここまで出来るようになったという観賞用ソースコードの域を出ていない


個人的にはC#、JAVA、C++という選択肢があったらC++選ぶけれど
そもそも静的言語で多くのソースコードを記述する機会がなくなったと思う
現在の静的言語の役割とは、動的言語から使用する為のモジュールを作って終わり

626 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 00:14:32.19 ID:AMmCkZV3.net]
Ruby3.0で静的型が導入されてからまた来てくださいね

627 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 00:21:51.59 ID:ms2dnfiV.net]
>>608
それ重要な役割だろ…



628 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 01:01:07.26 ID:7Mk50+GE.net]
前々から気になっていたんだけれどもプラグイン形式のソフトウェアってどうやって作ればいいの?
どういうふうにプラグイン形式を実装してるかさっぱり想像つかないんだけど

629 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 01:10:54.60 ID:xFdS5SzN.net]
cとluaの連携でも試してみると分かりやすいんでない
大雑把に言えばAPI決めて所定の手続きで拡張の余地を作るだけのことなのだけど

630 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 01:20:09.43 ID:vozKP37P.net]
C++の達人って技術に見合った対価をもらってなさそう

そういや前に2chで聞いた話だけど、SAP開発のエキスパートとかすごいらしいな
自分たちじゃどーにもならないSAPユーザ

631 名前:に対しゴルゴ13のごとくさっそうと現れ、
クライアントとほとんど交流せずに一人ホテルに2週間缶詰して華麗に解決し
さっそうと帰っていくという・・・年収数千万オーダーだと
[]
[ここ壊れてます]

632 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 01:41:33.88 ID:7Mk50+GE.net]
>>612
プラグイン用のディレクトリにぶっこむだけで動くプラグインとかあるじゃん?
あれはプラグイン用のクラスかなんかでディレクトリ読み込んでまとめて呼び出して実行してんの?

633 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 05:55:25.20 ID:mKFSoHrL.net]
>>614
ネイティブコードのプラグインを作りたいならdynamiclinkのlibraryを作って決められたディレクトリに入れる
それらに対して
dlopenで開いてdlsymで関数のアドレス取ってきて実行(WindowsならLoadLibraryとGetProcAddress)

予めinterface(シンボル名とそのinout)を決めておけば読み込んだファイルによって異なる動作をさせることが出来る

例えば画像ファイルプラグインだったら

サポートしている形式の拡張子を返す関数
ファイルのバイナリデータを渡すとRGBA32bitの配列と高さ幅を返す関数

とか有れば対応するプラグインを探し出してデコードする事が出来るよね

あと、そういうの作るときはC言語互換の関数にした方がいい。理由はC++はコンパイラによってシンボル名もクラスのABIも変わるから。

634 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 06:57:11.86 ID:KfJz9Mn6.net]
てか使われていないと言う話がよくわからん。
実際使わないところも多いのだろうが、使うところが極端に少ないというほど使われていない調査結果なんてあったっけ?
個人の主観による偏ったサンプリングの結果でしょ。

コンパイラやブラウザとか一般の目につくところで使われている分、全く目にしないということは少ない言語だと思うのだが。

635 名前:デフォルトの名無しさん [2015/11/20(金) 08:09:59.46 ID:DKlXZRvY.net]
webとかwindowsしか見てないんじゃね

636 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 08:26:48.90 ID:BmwCPVtJ.net]
> 使われていない

俺の回りでは (キリッ

ってことでしょ

637 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 10:27:28.40 ID:FnrKl1QX.net]
一回LFSをやればc/c++がいかに使われているかが分かると思うんだがなぁ。
LFS内でc/c++以外で使われてる言語っつったらautoconf/automakeにmake、m4、perl、sed、awk、grep、flex/bison、
それにTclなんかが少しずつ使われてるくらいか。

とやや的外れな突っ込みをしてみる



638 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 13:20:49.61 ID:7Mk50+GE.net]
>>615
詳しくありがとう

639 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 14:15:16.83 ID:SnNAjHh0.net]
new Hoge[12](arg1, arg2);
みたいな書き方はg++とかclangとかでもエラーになるけど昔の何かの環境では
問題なくコンパイルできてた記憶がある
この辺の経緯を知ってる人がいたら教えてください
それと同じような事をしたかったらどうすればいいかも教えてくれると助かります

640 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 16:57:03.25 ID:AMmCkZV3.net]
しらないけど
new hoge[12]{ a1, a2 };
とか
new hoge[12] = { a1, a2 };
とかは試してみた?
俺は試してないから
動くかどうか知らんが

641 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 17:56:26.14 ID:eapfkFrg.net]
>>621
std::vector使え
要素数reserveして一つずつemplace_back

642 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 18:01:07.80 ID:eapfkFrg.net]
Hogeがコピー出来て全部同じ値初期化でいいなら
v.resize(12,Hoge(arg1,arg2));
でもいい

643 名前:621 mailto:sage [2015/11/20(金) 19:42:52.26 ID:SnNAjHh0.net]
みなさん返答ありがとう!
>>622
コンパイルエラーだった…
>>623
こんなの

644 名前:ェ追加されてたんだ
若干ソースは冗長になるけど結局やってる事は同じになるんだな
>>624
コンストラクタが1回しか呼ばれなかった
[]
[ここ壊れてます]

645 名前:621 mailto:sage [2015/11/20(金) 19:45:18.88 ID:SnNAjHh0.net]
>>623
ちなみにvector使わずに同じ事って出来るの?

646 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 20:25:42.57 ID:eapfkFrg.net]
>>626
mallocとplcement new使えば出来るけどお勧めしない

647 名前:621 mailto:sage [2015/11/20(金) 20:49:53.12 ID:SnNAjHh0.net]
>>627
とりあえずソースというかヘッダーを見てみたけどc++11の機能を使えば
できるっぽい感じがした (あいかわらず難解だな…)
後は自分でもう少し調べてみるよ



648 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 20:55:59.43 ID:eapfkFrg.net]
>>628
03で出来るよ。11でそれをやりやすくなった機能は特にない。

素直にvector使っときな。

649 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 21:16:17.90 ID:FYcH3zZp.net]
>>629
いいからコテ付けろよ

650 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 22:13:46.34 ID:eapfkFrg.net]
>>630
なんで?

651 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 00:41:01.91 ID:rACYfPqD.net]
>>621
new Hoge[12](arg1, arg2);
これはどんなことを期待しているんだ?

Hoge(arg1, arg2)で配列全てを初期化
配列をHoge(arg1),Hoge(arg2),以下はHoge()にする

652 名前:超音波テロの被害者 [2015/11/21(土) 02:58:33.14 ID:OmX67Z3Y.net]
超音波テロの被害にあっています。
卑劣極まりない被害にあっています。

何が起こったかわからないときから、
わかってみれば、
まだ世の中に知られていない超音波テロ。

653 名前:超音波テロの被害者 [2015/11/21(土) 02:59:01.72 ID:OmX67Z3Y.net]
世の中のどれだけの音の振動源・発信源が
使用されているのかわからないが、
多数の振動源・発信源がシステム化され、
ネットワークを通して、
超音波・音波を集中させて
対象を攻撃するらしい。

654 名前:超音波テロの被害者 [2015/11/21(土) 02:59:37.09 ID:OmX67Z3Y.net]
人や社会が襲われ、罪もない人が超音波で襲われ、
卑劣な被害にあっています。
聞こえる声、音。超音波テロの加害者の声。

「もらいました」という声とともに、
形のあるもの、ないもの、奪っていき、壊していく
超音波テロの加害者の声。
聞こえる声、音。超音波テロの加害者の声。

655 名前:超音波テロの被害者 [2015/11/21(土) 03:00:13.10 ID:OmX67Z3Y.net]
超音波による物理的な力で、
ものが飛び、ものが壊れる。
それが人間の体に対してまで。

身体の表面を突き抜け、内臓を攻撃される。
頭蓋骨を突き抜け、意識を失わされる。
聞こえる声、認識できない声で、精神的なダメージ。
人間の体を壊そうとする超音波テロ。

656 名前:超音波テロの被害者 [2015/11/21(土) 03:00:46.41 ID:OmX67Z3Y.net]
日本国中、どこにいても超音波で襲われる。
車に乗っている人間が襲われる。
歩いている人間が襲われる。
自宅で超音波の攻撃を受ける。

被害を訴えても信じてもらえない。
罪もない人間が超音波で襲われる。

657 名前:超音波テロの被害者 [2015/11/21(土) 03:01:53.54 ID:OmX67Z3Y.net]
「見続けるのがいやだから、殺して終わる」、
「証拠隠滅だ」という超音波テロの加害者の声とともに
強烈な超音波の攻撃。
叫ばされ、いたぶられ、
超音波テロの卑劣な被害にあっています。
心の底から被害を訴え、祈っています。

天に神に届きますように。



658 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 06:28:37.30 ID:GdR6w5S8.net]
>>632
バカの特長はイメージだけで会話していて、
詳細を確認してみると答えられず
ただ会話できた気になっていただけのことが多い。
つまり何も考えていない

659 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 06:57:16.09 ID:rG1U6ao0.net]
学会における俺が丁度そんな感じだ

660 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 07:01:17.98 ID:z75NBL1W.net]
女の会話は100%その類

661 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 07:49:23.72 ID:WnHcVy1K.net]
超音波が身体の表面を突き抜けるのは当たり前。
だがネットワークのケーブルは音波の振動を伝達するのに向いていないから
音の伝送媒体として使うことは現実的に難しいだろう

662 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 12:28:51.78 ID:UH5fCNhv.net]
struct A{
template <class T> operator T&();
operator std::string

663 名前:();
};
こういうクラスがあったとき、
MSVCだと
std::string str=A();
でtemplateの方が呼ばれるの何でなん?
stringの場合参照返したくないんだけど回避方法ある?
[]
[ここ壊れてます]

664 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 12:34:10.95 ID:+qmJr5EI.net]
画面の中の俺の彼女は計算しつくされた会話をしてくれるぜ

665 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 12:37:44.25 ID:JXjswKeV.net]
>>643
戻りの型ではオーバーロードできないよ。
コンパイルエラーにならないのに驚き。

666 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 12:47:20.28 ID:UH5fCNhv.net]
>>645
キャスト演算子な

667 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 13:00:31.13 ID:sVK4zYvW.net]
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
最初にnを入力してもらい
n文字を一文字ずつ入力させ
それを並べ替えてできる順列を全て列挙しろ
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc 4.8.1
 [3.3] 言語:どちらでも
[4] 期限: 無期限
[5] その他の制限:特になし

自分で作ったところ7文字の順列には1秒かかるかどうかなのですが10文字にすると15秒くらいかかります。
確かに階乗は爆発的に大きくなりますが、仕方ないのでしょうか



668 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 13:19:39.66 ID:2FFj0oRp.net]
必要なだけメモリを確保しておいてそこに文字列を展開して
printf("%s", buffer);
したり
write(STDIN_FILENO, buffer, length);
したりしたら少しは速くなるんじゃない?
あるいはファイルに書き出してみたらどうなる?
windows上でgcc動かしたこと無いから実際どうなるかは知らんけど、
7文字の順列(重複が無ければ約5000通り)の列挙に1秒はどう考えても掛かり過ぎてる。

669 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 14:27:55.67 ID:+qmJr5EI.net]
>>647
コード貼ったら?

670 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/21(土) 15:42:51.71 ID:uVehkYL0.net]
>>633-638
専門家によると、3時間しか寝ていない人は、4時間しか寝ていない人に比べ、睡眠時間が1時間少ないという研究結果が出ています。

671 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 15:57:00.75 ID:wPUZshUi.net]
たまには面白いことでも言ってみろよ

672 名前:647 [2015/11/21(土) 16:04:52.60 ID:sVK4zYvW.net]
>>649
すみません、ちゃんとctimeを利用して測ったところ
n=7 0.0124s
n=8 0.1012s
n=9 0.952s
n=10 9.856s
でした

>>650
https://ideone.com/fFeukM

673 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 16:09:06.21 ID:wPUZshUi.net]
ちゃんと計算量に比例してるじゃないか

674 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 16:11:57.73 ID:GdR6w5S8.net]
車輪を再発明すんな
std::permutation使え

675 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 16:18:10.69 ID:sVK4zYvW.net]
>>654
そんな便利なものがあったのですか、、、
algorithmの存在は知っていたのですが、データ構造を覚えてる段階だったのでまだ触れていませんでした、、、

676 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 16:53:35.71 ID:2FFj0oRp.net]
>>655
39行目と42行目のcoutへの出力を削ったらどのくらいの時間になる?
どうも単にcoutが重いだけに見えるんだけど。

手元の環境で試したら(非Windowsだけど)、
そのまま, n=7 ==> Time : 0.009858
2つcoutを削った物, n=7 ==> Time : 0.000465
と20倍近く速くなったけど。

677 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 17:32:42.75 ID:sVK4zYvW.net]
>>656
何かしらの出力をしたいのです
実機では
cout と fout で foutの方が早かったので、そちらを使っています。



678 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 17:57:03.03 ID:2FFj0oRp.net]
>>657
>>648読んだ?
一度に出力すりゃいいじゃんって言ったんだけど。

https://ideone.com/2dfghh

679 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 22:37:41.73 ID:LN6XBRmt.net]
redirectしたら速いんじゃね。
console

680 名前:の速度に影響されているだけだろう。 []
[ここ壊れてます]

681 名前:uy ◆Qawu9.2l1E [2015/11/22(日) 01:44:24.74 ID:+n9aAbt6.net]
>>652
https://ideone.com/wDp0Du

682 名前:621 mailto:sage [2015/11/22(日) 04:38:14.98 ID:X/fYYmto.net]
>>639
なんか間接的に俺が馬鹿にされてるみたいだから>>632に答えるけど
>>623で同じ結果になると>>625で既に返答済み
>>632の人はこれで理解できた?もっと分かりやすく言った方がいいか?

683 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 07:13:37.54 ID:XdXJy7qN.net]
まさに
>会話できた気になっていただけ

684 名前:デフォルトの名無しさん [2015/11/22(日) 07:54:06.34 ID:+Vn4cJWj.net]
会話の相手はエスパー....周りはすごい奴だらけなんだろうな

685 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 08:06:30.80 ID:XdXJy7qN.net]
オブジェクトを少なくとも12個生成したのに
コンストラクターが1回しか呼ばれない異能のコンパイラーのようだ

686 名前:デフォルトの名無しさん [2015/11/22(日) 08:53:35.95 ID:ZD+TX9lw.net]
trivialなコンストラクタが呼ばれてるのに気付かず騒ぐアフォとかか?

687 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 11:04:36.72 ID:/1Ux32Jq.net]
↑trivialの意味も知らずに使ってみたかった大学生



688 名前:621 mailto:sage [2015/11/22(日) 14:43:58.95 ID:22+yRhdX.net]
久々にこのスレ来たとか会話とか連呼するアホばっかになってんだな…

689 名前:uy ◆Qawu9.2l1E [2015/11/22(日) 14:49:46.81 ID:hFpqZnLD.net]
学生9割のスレで何言ってるん

690 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 16:35:51.18 ID:vYPMz+tE.net]
ほんとバカばっかでまともな奴見たことがないよね

691 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 22:21:43.51 ID:bqva/aW3.net]
************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピューター (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。

というのが出てきてアプリが起動できません。
解決法教えてください

692 名前:デフォルトの名無しさん [2015/11/22(日) 22:31:34.54 ID:ZTXK4DbK.net]
_scprintfのC++標準版はどの関数ですか

693 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 22:39:51.97 ID:DXehIZQK.net]
snprintfじゃねーの?

stackoverflow.com/questions/16351523/vscwprintf-on-mac-os-x-linux
みたいにvsnprintfにva_startして投げてもいいけど。

694 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 22:42:20.20 ID:Y+QuE8W5.net]
>>670
その起動しないソフトのスレかサポートにでも聞いてくれ

695 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 02:15:24.62 ID:X7nA4OxA.net]
クラス内関数の引数で配列受け取ったらsizeof(配列)/sizeof(配列[0])しても長さが2しかないンゴ
20バイトあるはずンゴおかしいンゴ

696 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 02:22:04.94 ID:kEUHEwN+.net]
>>674
vector使え

697 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 02:23:05.17 ID:b98i53Mh.net]
>>674
関数の引数に配列は渡せないよ
渡せるのはポインタ



698 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 05:41:04.46 ID:sX9R0Aqt.net]
C++11以降はinsertとpush_backの代わりにemplaceとemplace_backを使えという話を聞きます
無駄なオブジェクトのコピーと破棄がないからというのが理由らしいですが、そもそも
insertとpush_backをそのようにすればよかったんじゃないでしょうか?
わざわざ新しい関数を作ったということは、何かそうする意味があったということでしょうか?

699 名前:デフォルトの名無しさん [2015/11/23(月) 10:14:47.25 ID:KuAQlUq5.net]
>>672
これのワイド文字列版はどれですか

700 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 10:19:28.05 ID:OK+rBFmG.net]
>>676
言語の欠陥だよな。配列のポインタを渡すのと、配列を渡すのが同じ動作になるなんて。

701 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 11:11:28.26 ID:sPPVeBSO.net]
>>679
??

配列は先頭とサイズのセットで特定されるんだから、必ずその2つを渡す必要がある
生配列だろうが、vectorだろうが同じこと
それが明示的に見えるかどうかの違いしかない

702 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 11:43:54.74 ID:hCdJkAL3.net]
少なくとも関数の引数の配列宣言がポインターになるのは糞としか言いようがない

703 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 11:51:50.68 ID:X7nA4OxA.net]
ありがとナス!
後学のためになぜクラス内関数に配列のポインタを渡しても配列の正確なサイズが測れないか教えてほしいンゴ

704 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 11:59:26.75 ID:HCtl1Hii.net]
void f(先頭要素へのポインター)
{
}

どうやって測るつもりだお前は
測りたければC使え

705 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 11:59:52.19 ID:nxfGVCVi.net]
クラス内関数にかぎらず関数の話だと思うけど
sizeofの不思議な仕様だよな、配列のサイズが測れるのが

706 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 12:04:25.19 ID:5/8mbdQh.net]
sizeofは関数じゃないので

707 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 12:09:36.01 ID:Fj1Djrod.net]
>>682
ポインタ変数も配列もデータとしては同じ
つまり"あるオブジェクトのアドレス"としての情報量しかない
配列ではその"あるオブジェクト"が配列の先頭オブジェクトであるというだけ
配列として確保した場所では、確保したサイズが静的にわかるから
sizeof()で配列全体のサイズを取れるが
一度関数に先頭アドレスが引数として渡されたら、渡された側では
"あるオブジェクトのアドレス"という情報量しかないから
"その先に何個オブジェクトが並んでいるか"なんて知りようがない
知るためには、
- その引数に渡す配列の大きさを静的に決めておく
- サイズも一緒に渡す
- 終端データを決めておく
といったことが必要



708 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 12:19:44.80 ID:+Ddm9172.net]
でも、配列の名前を参照すると右辺値ポインタ的な何かになるって仕様のおかげで
mallocなんかで確保したポインタを配列のように扱えるってのが自然に行えるので
まーまー良く考えられていると思うよ
アセンブリの感覚に近い

709 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 12:21:28.56 ID:X7nA4OxA.net]
ありがとナス!
引数に配列長も渡して解決したンゴ。
テンプレートはまだ触らないんンゴ。黒魔術って聞いたことあるンゴ

710 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 12:27:06.06 ID:X7nA4OxA.net]
vectorがテンプレートだと勘違いしたンゴ
忘れてクレメンス

711 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 13:29:00.02 ID:rbzy+nqq.net]
配列への参照を渡すことはでき、その場合は長さ(要素数)もわかるよ。

712 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 13:34:48.41 ID:kEUHEwN+.net]
>>683
C…?

713 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 13:40:38.54 ID:NLqUjyrO.net]
そもそも配列は普通に関数の引数として渡せるだろう。

714 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 15:03:32.38 ID:1SvbKstr.net]
>>677
C++11より前は可変長引数テンプレートが使えなかったのでemplace系は出来なかった

715 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 15:14:57.57 ID:BLfdTv5g.net]
そこら辺りはコンパイラが最適してたな
アンパサンド参照渡しで問題ないし
暗黙の型変換起こるのはプログラム書いているやつがヘタクソってだけのことだし

716 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 17:58:02.11 ID:UY1pSnQK.net]
>>683
void f(const char* s)
{
 size_t len = strlen(s);
 printf("%Iu\n", len);    // "%Iu"はVC固有
}

あるいは先頭が文字数の文字列(確かPascalのやつとか、BSTR型)だとか…

とか逝ってみるテスト

717 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 18:03:59.62 ID:5aEjJ0S2.net]
Visual C++なら%zuだろ



718 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 19:26:36.28 ID:UY1pSnQK.net]
>>696
いやそれが!
ttps://msdn.microsoft.com/library/tcxf1dw6.aspx
> I、I32、および I64 の長さの修飾子のプレフィックスは Microsoft 拡張機能であり、ANSI 互換姓がありません。
>hh、j、z、および t の長さのプレフィックスはサポートされていません。

719 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 20:02:04.55 ID:adyi0o7H.net]
>>6

720 名前:88
ンゴンゴ言ってんじゃねーよ。

>>690>>692のいう通りだ。
テンプレートを使え。
[]
[ここ壊れてます]

721 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 20:28:50.58 ID:9bEmVQ8p.net]
>>697
そっち(vcruntime140.dll)じゃなくてUniversal CRTの方は直ってるはず
普通にprintf("%zu", sizeof(double))してみ

722 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 05:12:52.37 ID:R3jHI5aT.net]
>>699
レスdクス、貴重な情報あり〜
とはいえ
>Universal CRT
    | (インストールマンドクセ…           
    |  ('A`)    
   / ̄ノ( ヘヘ ̄ ̄

ウインドーズアップデートで勝手に入るらしいのを待つ、

723 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 10:59:13.49 ID:PNMHyUFz.net]
Fortranは配列渡すとサイズも分かるから便利ではあったな
Cは言語やランタイムが暗黙の処理をするのを極力排除する方針だから
今の仕様になってんだろうね

724 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 12:18:15.20 ID:1SleeXaD.net]
低レベルの処理は配列サイズは固定の場合が多いし、OS書くためのアセンブラの代替が目的だから。

725 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 13:00:44.07 ID:PNMHyUFz.net]
配列がFortranと同じ仕様だったとしてもOSは書けるでしょ

726 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 13:07:11.79 ID:1SleeXaD.net]
省けるサイズ渡しの処理コストを最下層のOSに負担させるの?
昔のCPUの非力さ考えたら、やっぱり当時の判断としてないね。

727 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 13:14:51.19 ID:2IyJeQ15.net]
何言ってるんだ?Cには値渡ししかないんだから、今の仕様は当然だろ



728 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 14:13:11.85 ID:VjysyORC.net]
揚げ足を取るようだが、ポインタ渡しを値渡しのポインタ版でしかないというなら、
参照もポインタもなんでもかんでも、値渡しになってしまうやで

729 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 14:15:42.81 ID:qZ9OT4oo.net]
お前らFortranの仕様を知らんのか?
配列は単にポインタ+サイズが渡されるだけだぞ
(自前でサイズの変数を用意したりする手間が省けるってだけだ)
丸ごと配列が渡されると勘違いしてないか?

730 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 14:20:35.37 ID:SGPcTC2U.net]
だからもう生配列なんか使わずにstd::vectorかstd::arrayを使えと

731 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 14:30:26.02 ID:qZ9OT4oo.net]
あとFortranはコンソール出力も言語仕様に含まれてたから、Cだとprintfが
実行時にフォーマット文字列を解釈するところをコンパイル時に解釈して
多分最適なバイナリを出力してた (変数の不一致もコンパイル時に分かる)
だから昔の非力なPCでもコンソール出力が爆速だった
大量の数値を出力する時はその差が馬鹿にならなかった
今はどうでもいい話だが

732 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 15:20:54.87 ID:VjysyORC.net]
>>708
vectorだろうと配列だろうと同じこと
結局先頭の場所とサイズを渡してる

733 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 15:28:16.37 ID:SGPcTC2U.net]
>>710
だから生配列を使う場合はサイズを自前で渡す必要あるでしょ
テンプレート使えばその手間を軽減できるとしても
多次元配列になると面倒なことになる
その点vectorやarrayなら標準的なサイズ取得手段が用意されているということ

734 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 19:02:02.62 ID:DVbUiEch.net]
>>709
コンソール出力でプログラムがボトルネックになる環境なんて聞いたことない
そもそも昔の FORTRAN の話であれば出力はラインプリンタか IBM ゴルフボールタイプライターなのでいかに非力なマイコンですら追いつかないとかあり得んし

735 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 19:41:21.83 ID:C+mqbgnu.net]
ラインプリンタはかなり速いよ?
昔ほど相対的に印字の方が速かったわけだよ

736 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:03:56.87 ID:qZ9OT4oo.net]
>>712
286か386とかの頃だぞ
聞いた事ないってそりゃ聞いた事ないだけだろ
インター

737 名前:ネットも普及してない頃だし []
[ここ壊れてます]



738 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:07:21.11 ID:qZ9OT4oo.net]
>>712
あとボトルネックになるなんて一言も書いてないのに曲解にもほどがある
大量の数値を出力する時に気になるぐらい差がつくって言えば分かるの?

739 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:39:03.96 ID:SWzWjpEY.net]
>>713
汎用機に繋がる高速ラインプリンタでも 1,500行/分程度
1,500行/分×132文字/行 = 198,000文字/分 = 3,300文字/秒
1文字1バイトとして、約300μs に1文字なので初期の 8bit マイコンだと DMA がないとちょい苦しいぐらい
まあ、数千万クラスのラインプリンタにマイコン繋ぐ奴がいるとは思えないが

740 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:42:59.31 ID:OSTSPIeY.net]
>>377
Cは知らんがC++ではハーブサッターが提案してるようだぞ
P0144

741 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:43:59.67 ID:SWzWjpEY.net]
>>714-715
286/386 の時代なら printf のフォーマット文字の解釈なんてたいしてかからん
数値から文字列への変換は FORTRAN でも必要だから、違いがあるとしたら各々の出カルーチンのできとかの問題だろ

742 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:46:40.26 ID:C+mqbgnu.net]
>>716
1MIPSのマシンで数十のタスクを動かしてると全然間に合わないんだよ

743 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 20:57:46.96 ID:qZ9OT4oo.net]
>>718
とりあえず想像で言うのはいいよ
絶対的な時間を言ってんじゃないよ?フォーマット文字列の解釈と可変長引き数
の処理が必要ないFortranの方が圧倒的に速いに決まってんじゃん

744 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 21:02:04.27 ID:NlhBd7gP.net]
>>720
Qにマジレス、かっこ悪いぞ
コイツはキチガイなので議論するだけ時間の無駄

745 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 21:22:21.09 ID:gTfZY7AW.net]
>>711
テンプレートだとしてもサイズは渡す必要がある
C++での列の抽象化と、実装でどこまでカプセル化するかを区別して話しましょうと言いたかっただけ

俺だって生配列なんか使わずにstd::vector使えよというのは完全に同意だよ

746 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 21:28:45.00 ID:RjS/u5NO.net]
>>722
サイズは渡さなくても受け取った側でわかるでしょ。

それはともかくスコープの短いその場限りの固定長配列なら生配列を使うことはあるな。

747 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:02:30.51 ID:SWzWjpEY.net]
>>719
> 数十のタスクを動かしてると全然間に合わないんだよ

そんな後出し条件出されても困る



748 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:05:35.75 ID:C+mqbgnu.net]
常識だよ
誰が8bitマイコンにラインプリンタつないでFORTRANで出力するんだっての

749 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:10:51.57 ID:SWzWjpEY.net]
>>720
想像じゃないと言うなら、比較したCと FORTRAN の処理系の名前をどうぞ

> フォーマット文字列の解釈と可変長引き数の処理が必要ないFortranの方が圧倒的に速いに決まってんじゃん

普通の頭持ってたらコンソールへの I/O の処理の方が圧倒的に重いことはわかるはず
VRAM に直接出力できるならその限りではないけどそんな処理系見たことないし、そもそもそれって言語仕様の話じゃないしな

750 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:14:03.09 ID:C+mqbgnu.net]
頓珍漢もいいとこだな

751 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:19:57.94 ID:SWzWjpEY.net]
>>725
何の常識か知らんけど、普通に汎用機に繋ぐ話なら数十ぐらいのタスクでラインプリンタに間に合わないとかあり得ない
汎用機は I/O プロセッサ持ってるし
計算センターとかだとラインプリンタより10倍速いページプリンタですら、システムに8台とか繋いでるのは普通にある
プリンタは用紙搬送と言う物理的動作を伴うからこれ以上の性能向上は難しい

752 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:21:34.92 ID:SWzWjpEY.net]
>>727
頓珍漢としかレスできずに悔しいです
って言うのはわかった w

753 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:22:56.59 ID:C+mqbgnu.net]
まぁ昔話だからな
いつの間に今の話になってるんだか知らんが

754 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 22:32:53.29 ID:YrcuLR5W.net]
>>730はキチガイコテハンQより知能が低いなんて
もう生きているのも恥ずかしい

755 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 23:02:23.40 ID:SWzWjpEY.net]
どれくらい昔の話をしたいのか知らんが、286/386 辺りの前から汎用機にしろPCにしろ、ラインプリンタに追いつかないシステムなんて見たことないなぁ
過負荷試験とかの特殊な状態とかならわかるが、通常状態でプリンタごときにデータ供給しきれないなんてシステムの設計ミスにしか見えんし
ちなみにページプリンタの話すら 15年前の話だぞ
今の話ってどこから出てきたんだ?

756 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 23:58:07.41 ID:gTfZY7AW.net]
>>723
受け取った側でわかるのは渡してるから
生配列はサイズがコンパイル時に決まるから、テンプレートで処理すると渡さなくても分かるように見えるだけ

757 名前:デフォルトの名無しさん [2015/11/25(水) 00:15:50.74 ID:Vd1+RMMI.net]
今のページプリンタって、内容的にはシリアルドットプリンタだよな

カン!!って一発の打撃で一行打つのがラインプリンタなら
同様にボッ!!っと一発のキセノンで1ページ打つのがページプリンタだが
たいていのやつはそうなってない



758 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 00:25:12.77 ID:YTudM7kD.net]
>>733
それは屁理屈だ。

759 名前:デフォルトの名無しさん [2015/11/25(水) 01:10:12.26 ID:Vd1+RMMI.net]
いや情報が与えられるタイミングが翻訳時か実行時かは切実な問題で
屁理屈で片付けめでたしにはならないよ

760 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 01:18:35.68 ID:djITcnYk.net]
どうでもいいけど今時のコンパイラならprintfに渡したフォーマット文字がリテラルなら静的に解析して最適化するよ
例えばclangとかだと型間違えるとコンパイル時にフォーマット文字と型ちげえよって警告出るよね

761 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 01:26:29.48 ID:T3SJIv30.net]
引数にポインタを与えて、その関数内でポインタをdeleteする場合
func(void*p) とfunc(void**p) どっちが良いのでしょうか?

762 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 01:35:43.20 ID:djITcnYk.net]
>>738
そんな関数を作るなが正しいunique_ptrかshared_ptr使え

763 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 01:41:00.59 ID:wwtRzQvg.net]
ニッポンの平均最低月給と人口の都道府県別、市町村別ランキング
求人情報113,957件の平均最低月給196,400円 ♬

あなたの住む街は第何位?平均最低月給はいくら?
jobinjapan.jp/area/

764 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 04:14:25.73 ID:bcxVqDWn.net]
このスレでFortranが熱く語られるとはw
大学とか研究室とかだといまだに残ってるんだよねFortran
でも初めてプログラムを学ぶ学生にとっては可哀想

765 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 04:21:27.10 ID:eZQMgmgd.net]
>>560
そのアホな作りをメンテ中

766 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 04:32:32.11 ID:eZQMgmgd.net]
ほとんどの現場で「同じコードを二度書くな」とか「短いコードが読みやすい」という常識が無い

767 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 06:57:53.15 ID:2XtuZnsc.net]
>>741
知ったか爺が暴れてただけでしょ



768 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 07:10:59.80 ID:rt0m4xM1.net]
>>743
意味も理解せず機械的に形を真似る低能の典型的な信仰の一つですね

769 名前:デフォルトの名無しさん [2015/11/25(水) 07:11:56.20 ID:YbqZzFFd.net]
>>713
メインフレームにもページプリンタ繋がってるぞ。
あの繋がったプリンタ用紙がバサバサ出て来る。

770 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 08:18:30.69 ID:SibVDZBg.net]
>>741
まさか21世紀なのにFORTRAN77をやらされるなんて思わないよな

771 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 08:23:09.32 ID:YbqZzFFd.net]
>>747
再帰スレにはFORTRAN77を信奉して、再帰絶対に禁止と、布教してる爺さんがいる。

772 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 08:52:28.45 ID:A3UqQzxB.net]
>>745
俺もな、現場を見ていると、
「意味なんか考えなくていい。
ぐだぐだ考える前に>>743を実行してくれ」
って思うようになった。

773 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 09:33:09.03 ID:LoKzz2Cb.net]
発展途上国かよ

774 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 10:10:03.12 ID:fCnsK2cL.net]
俺も研究室時代はFortranが全てだった
Fortran2003でコードを書く自分を先進的だと思ったりもしたw

まあ、色々な言語を経験した上でFortranにするならいいんだけど
教員や学生に最低限のプログラミングリテラシーがあったら日本の研究は相当底上げされるんじゃないの?

775 名前:デフォルトの名無しさん [2015/11/25(水) 10:36:45.21 ID:y0tfJcvP.net]
fortranの話はどうでもいい

776 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 10:39:15.80 ID:s9hTLLjK.net]
ほんと。そもそもfortranを駆逐できなかったのはc++が不完全だったから。

777 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 11:27:57.90 ID:djITcnYk.net]
完全な言語など無いわな



778 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 11:55:11.62 ID:n/g2lh6I.net]
Lisp「ガタッ」

779 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 12:30:27.72 ID:38cA3W2G.net]
class Unko{
public:
int smell;
int amount;
}

Unko* unko = new Unko{ 100 , 1000 };
こうやって初期化できること初めて知ったんだが、
本とかで使ってるの見たこと無いんだけど、使ったことある?

780 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 12:36:42.45 ID:ZxQAt2k5.net]
それは縮小変換を許さない初期化

781 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 12:36:53.96 ID:n/g2lh6I.net]
>>756
あるにはあるけど。

コンストラクタ定義して丸括弧を使うか、
あるいは最低でも
c99拡張なら {.smell=100, .amount=1000}
gnu拡張なら {smell: 100, amount: 1000}
みたいに読みやすくするかな。

最近はnewなんて使わずに全部make_sharedに投げてるし。

782 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 14:11:09.53 ID:UAq2OPe9.net]
>>726
お前は本当に馬鹿だな
絶対的な速度を言ってんじゃないよ?(2度目)
IOが重かろうが差がついたと言ってんだよ
処理系はとっくに忘れたが両方GCCだったはずだ
バージョンは知らん

783 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 14:15:19.89 ID:s9hTLLjK.net]
今も昔もprintf()の実装が糞なのは認める。昔は高速なputs()使えなんてのはよく言われたものだ。

784 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 15:11:37.21 ID:6L0AsNvY.net]
>>760
> 今も昔もprintf()の実装が糞

どの実装がどの実装と比べて
どの点がどういうふうに糞なの?

785 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 16:38:34.83 ID:O+sc6fcj.net]
>>753
君、学生でしょ?
20前後の。

786 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 16:47:38.57 ID:n/g2lh6I.net]
少なくともprintf(vfprintf)のglibc実装は糞だろ。
450行から成る巨大な関数に35個のgoto、入り乱れたマクロ、CHAR_Tとcharがぐちゃぐちゃに混ざり、
-1をポインタ型にキャストして比較!
おまけにインデントまでタブとスペースが混ざってる。

その点putsは良いね。20行に満たない小さな関数でgotoフリー、キャストなんかのきな臭いテクニックも使われておらず
全てのインデントがスペースから成っている。
他に何か言うことある?

787 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 16:54:37.38 ID:Sra0FKsR.net]
code.woboq.org/userspace/glibc/stdio-common/vfprintf.c.html
これか
確かに読めといわれても読めんわ



788 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 17:41:38.10 ID:qW/TsJAB.net]
>>763
冗談で言ってるのかどうか計りかねるんだが…
1) 実装と言うわりにソースコード上の表現にしか言及していない
2) 可変長引数でさらにフォーマット文字を扱うものと、そうでないものを比較
3) じゃあどんな素晴らしい実装がほかにありえるのか

そしてそれを批

789 名前:サするお前はどんだけのprintfを実装してみせてくれるのか []
[ここ壊れてます]

790 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 17:54:57.71 ID:7xFqT66+.net]
いやC++のスレッドなんだから、「そこでストリーム出力ですよ。
自作のクラスだってきれいなフォーマットで表示できちゃう」
とprintf()廃止論に持っていくんじゃないかしら。

791 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 18:13:04.55 ID:l+3JfIO+.net]
・仕様に完全に対応し
・バグなく
・メモリも過剰に消費せず
・実行時間も過剰に消費しない
・長く使われて(結果的に)広くテストされている

このレベルまでもなかなか到達できないと思う
その上で、ソースが整理されてるとか
実行時に省メモリだとか高速だとかの話が出来る

792 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 18:52:05.27 ID:n/g2lh6I.net]
>>765
>>760
> 今も昔もprintf()の実装が糞なのは認める。昔は高速なputs()使えなんてのはよく言われたものだ。
に対する、>>761
> どの点がどういうふうに糞なの?
に対して冗談交じりの横槍を入れただけなのだけど。
printfとputsをわざわざ比較した理由はそれ。

# 実装しろというなら今度してみるけど、
# printfの現行のISOによる仕様がちょっと複雑なので(8ページにもなる!)
# K&Rのprintfの仕様への対応で勘弁して欲しいね。

>>767
正論だけど
あの8ページくらいになるprintfの仕様書の該当箇所と、400行ちょっとになる関数とを比較して
仕様書通りの動作に確実になるって言える勇気ある?
ひょっとしたらいつものようにGNUの拡張が紛れ込んでるかもしれないんだけど。

793 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 19:15:21.35 ID:q7ajOTDt.net]
>>768
> に対して冗談交じりの横槍を入れただけなのだけど。

先走ってしまって大変申し訳ない
ユーモアのセンスが俺に欠けてたねw

> # 実装しろというなら今度してみるけど、

その苦労を分かる人にそれをお願いなどできません

794 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 19:22:32.60 ID:n/g2lh6I.net]
>>769
こちらこそ微妙なジョークを言ってしまってすまない。

795 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 19:26:09.15 ID:cXbSMUtR.net]
clangのprintfの実装はどんなもん

796 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 19:53:59.52 ID:eZQMgmgd.net]
>>745 みたいな奴、職場にいる。OSは知っているがコーデングは何も知らず恐ろしいまでの難読コード書く奴

797 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 20:06:08.50 ID:38cA3W2G.net]
Microsoftのサンプルコード読んでるうちに長いコードが偉いという考えになった



798 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 20:14:50.71 ID:5w30c50m.net]
>>773
アレは参考にしちゃいかんぞ

799 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 20:29:39.76 ID:s9hTLLjK.net]
>>765
Pascalの実装に決まってるじゃないか。

>>766
それだよそれ、C++の欠点。書式stream。誰が使うねん。

800 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 20:49:36.95 ID:eZQMgmgd.net]
PascalはC++で組むの?

801 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 21:08:14.63 ID:RAN2jGuk.net]
FORTRANだよ

802 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 21:53:52.49 ID:7xcGCsmA.net]
>>759
> IOが重かろうが差がついたと言ってんだよ

100秒と 100.01秒なら、100秒の勝ちって奴ですね
一生ほざいてればいいんじゃね? w

803 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 00:22:56.72 ID:XvZIFf4u.net]
printf()はvfprintf()を使えば書ける
vfprintf()が何でどう書かれているのかは考えたことも無いが

804 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 07:33:06.27 ID:gnba9wz+.net]
>>779
着想は間違っていないが踏み込みが足りない。
vfprintf() は vsprintf() で文字列に整形してから
fputs() を使って出力するのだ。

805 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 11:42:26.02 ID:w6z7subU.net]
>>780
いやいや、fputsを使ったら暗黙の改行が追加されるからそれでは駄目。
vfprintfをvsprintf使って実装するならfputsの代わりにfwriteを使わなきゃ。

806 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 11:48:07.78 ID:cMOPjOrt.net]
fputsは改行追加しないでしょ

807 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/11/26(木) 12:08:03.91 ID:0Rc82yPU.net]
それがfputs(stdout, ...)とputsの違い。
リファレンスで確認せよ。



808 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 12:39:56.96 ID:w6z7subU.net]
ごめん、fputsは改行を追加しないとか(単に使わないから)知らんかったわ。

809 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 12:53:33.04 ID:cMOPjOrt.net]
>>783
ファイルポインタは第2引数な
int fputs(const char *S, FILE *FP);

810 名前:780 mailto:sage [2015/11/26(木) 16:24:54.78 ID:gnba9wz+.net]
「printf() の実装に vfprintf() を使う」に乗っかって
「ならば vfprintf() の実装には vsprintf() じゃい」と
深く考えもせず書いたネタだった(皆さんお気付きと思うが)。

puts() と fputs() の挙動の違いなんて意識してなかったよ。
ちょっと勉強になった。

811 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 17:26:28.03 ID:GUUXPrkk.net]
木とかグラフを表すコンテナは追加されないの?

812 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 17:32:56.04 ID:xvh9rNnd.net]
結局のところ、vsprintfとvfprintfのコードは共通なの?

813 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 17:56:34.22 ID:w6z7subU.net]
>>788
うん。
glibcではvsprintfはvfprintf使って作られてる。

814 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 23:33:27.11 ID:huY8yWFD.net]
>>789
逆じゃね?

815 名前:デフォルトの名無しさん mailto:sage [2015/11/26(木) 23:46:27.20 ID:eXAV4Cml.net]
そんな糞関数よりC11のvsnprintf_sをはよ規格に入れるべき

816 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:18:56.84 ID:D0U2RhLm.net]
struct と書いたあと、 class にしなきゃならないと判明した時点で class に変える?
それとも class と書いたあと、 struct で十分だと判明した時点で struct に変える?

817 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:22:44.18 ID:jQDKzCya.net]
デフォルトがprivateかpublicかの違いだけじゃないの



818 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:24:46.51 ID:biLzdC6e.net]
↑何のデフォルトか分からずに言ってるバカ

819 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:38:40.02 ID:cxyGwFn6.net]
>>792
>しなきゃならないと判明した時点で class に変える?
しなきゃならないことをしないほど
お前は低能なのか?

>struct で十分だと
classはstructの上位版でないので
「十分」という考え方はおかしい

820 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:52:12.98 ID:Bpp9Chxs.net]
>>790
逆だと思うじゃん?
> glibcではvsprintfはvfprintf使って作られてる。
で正しいんだぜ。
code.woboq.org/userspace/glibc/libio/iovsprintf.c.html

821 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 00:54:17.82 ID:D0U2RhLm.net]
>>795
>しなきゃならないことをしないほどお前は低能なのか?

「時間のずれ」って概念はわかる?

822 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 01:08:13.77 ID:Bpp9Chxs.net]
classとstructは元々概念からして全くの別物だからな。

まぁ仕様上はデフォルトのmember access controlがprivateかpublicかの違いしか無いけど。

823 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 01:11:48.13 ID:B/NYVAdM.net]
ネーミングセンスないよな。virtualとか日本の誤訳のせいで混乱してるのだけど。

824 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 01:18:49.43 ID:Bpp9Chxs.net]
まぁ某言語のrplaca関数より随分マシだけどな。

825 名前:デフォルトの名無しさん [2015/11/27(金) 02:01:45.18 ID:mL1+69Nb.net]
>>798
その違いについて、ゲーハーは「誤りであった」と語っているな

826 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 06:22:22.35 ID:soZ3p4k0.net]
>>798
継承を忘れるんじゃない!

827 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 08:38:40.74 ID:Bpp9Chxs.net]
>>802
structも継承出来るよ。



828 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 08:43:13.48 ID:yE5slmiS.net]
>>792
struct でいい場合はstructとしておきたい、というのはわかる。

829 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 08:44:42.58 ID:yE5slmiS.net]
>>803
ベースクラスがデフォルトでprivateかpublicかの違いのことじゃない?

830 名前:デフォルトの名無しさん [2015/11/27(金) 08:54:21.94 ID:BUdTfJfj.net]
完全C互換の時のみstructにしてる

831 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 08:55:43.21 ID:xVNmanwA.net]
>>796
マジか、知らなかった

832 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:04:54.22 ID:cYQ+kigl.net]
全メンバーprivateなクラスなんてほぼ無いんだからデフォルトprivateとか無駄だよな

833 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:10:23.44 ID:jQDKzCya.net]
で、結局お前は何が言いたかったん?>>794

834 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:15:20.65 ID:lqAStIIQ.net]
>>808
カプセル化って知ってる?
原則private例外的にpublicと、その逆は別

835 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:33:48.43 ID:cYQ+kigl.net]
>>810
全メンバーprivateなクラス書いたことある?
一つでもpublicがあったらpublicってかかなきゃいけないよね?
逆にprivateなメンバーがないクラスなんてざらにあるよね?
此処まで言わなきゃわからない?

836 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:40:52.95 ID:jQDKzCya.net]
基本private、公開したいものだけpublicて方針の方がいいと思うよ

837 名前:デフォルトの名無しさん [2015/11/27(金) 10:48:05.99 ID:BUdTfJfj.net]
publicにしたいなら明示的に書かないとダメってのが安全ってもんだ
そこで楽をしたいわけじゃないしな



838 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 10:59:50.87 ID:yE5slmiS.net]
>>811
一応賛成しておこう。
カプセル化は大切だが、privateメンバを持つことが目的ではないし、無いに越したことはないからな。

839 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:00:17.17 ID:yE5slmiS.net]
>>812
基本的public

840 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:17:52.15 ID:cYQ+kigl.net]
一度publicって書いたらそれ以降publicになるC++の仕様でデフォルトprivateにしようが、考えなしのやつは一番上にpublicって書いて終わり、どうせ一度は書かなきゃいけないんだからな。
そういう奴に少しでも考えさせるならJavaやC#みたいに一つ一つ書かせないと意味がない。

それに最初にpublicなメンバー(そのクラスのinterface)を考えるだろ、そのための内部実装で必要になったらprivateなメンバー書くpublicはほぼ必須だがprivateは必須じゃない。

841 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:23:14.28 ID:lqAStIIQ.net]
>>811
ええ…
privateがないクラスなんてほとんど書かないし、
privateしかないクラスも結構普通に書くが…
てか実装クラスは普通全部privateじゃねーの?

842 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:24:55.94 ID:lqAStIIQ.net]
あ、実装クラスでもコンストラクタはpublicにするか

843 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:32:42.69 ID:cYQ+kigl.net]
お次の方どうぞー

844 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:42:48.07 ID:cYQ+kigl.net]
次の方って言っちゃったけど言及するとなんでもかんでもpublicメンバー全部virtualなベースクラス作ってそれを派生して実装作ってベースの参照を使うようにして実装の隠蔽(キリッ)とか言ってる人に見えるね

845 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:43:12.07 ID:Je5SN0dZ.net]
>>819
お前だろwww

846 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:47:28.87 ID:cYQ+kigl.net]
>>821
メンバー全部privateなクラスを書く人ですか?

847 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:50:20.23 ID:H/eLoV2h.net]
なんかID:cYQ+kiglみたいなプロマネが入ってきてプロジェクトが死にましたみたいなWeb小説なかったっけ?
面白かった記憶があって、また読みたいんだが、どうやって検索すればいいかわからん



848 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 11:56:45.43 ID:cYQ+kigl.net]
>>823
staticおじさんのことならそれでググれば出てくると思うよ。

オブジェクト指向が無意味だなんて一言も言ってないんだが、理解出来ないのかする気がないのかまともな反論がないから何処が通じてないのか解らないよ

849 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:01:45.27 ID:fmEy0pN3.net]
構造体の初期化をHTML風に書こうとして

#define <UNKO> new Unko{
#define </UNKO> }
class Unko{
public:
}

Unko* unko = <UNKO >

</UNKO>

こうやったんだけど、全角使わないでHTML風に書ける?

850 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:07:53.99 ID:H/eLoV2h.net]
>>824
辿ったら見つかった、ありがとう
てか、モデルが実在したの知らなかった

横から見ててあなたは実装とインターフェースを分離することを否定してるように見えるよ
しかもC++ではpublicメンバーをvirtualになんかしないでしょ
インターフェースクラスはNVIで書くのが普通なんじゃない

851 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:10:35.03 ID:BmEzTRfI.net]
メンバ全部privateなら外から何のメソッドも呼べないじゃん

852 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:22:51.34 ID:wCyF/5aJ.net]
> 逆にprivateなメンバーがないクラスなんてざらにあるよね?

素直にカルチャーショック?だわw
privateが無いクラスとか一回も書いたこと無いわ俺

853 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:31:16.93 ID:yE5slmiS.net]
>>828
マジで?!
俺は極力structにしているが、一度すべてをpublicにしたクラスを作ってみては?
もちろんカプセル化は保つんやで。

854 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:33:49.86 ID:H/eLoV2h.net]
>>829
カプセル化とはなんだったのか

855 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:34:05.81 ID:5aaazbOS.net]
>>826
どのあたりが否定してるように読めましたか?具体的に教えて貰えると有り難いですが
全てpublicになんて言ってるわけじゃないのは解るよね?

本当に思いつかないやつも居るみたいだからめんどくせえお前らの為にpublicしか書かない例挙げてやるよ
std::runtime_error(もしくは類似クラス)をエラー種別毎に例外分けれるように毎に派生させる場合

856 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:34:55.03 ID:TF2ho38j.net]
すべてpublicでかつカプセル化を保つコードというのが想像できないのだが
カプセル化のイメージが違うんだろうけど、具体的にどんなコードになるの?

857 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:39:08.56 ID:5aaazbOS.net]
>>832
クラス内のprivateで定義したクラスとかcppで定義したクラス(所謂pimpl)とか
は全部publicでもカプセル化保てるよな?



858 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:42:02.77 ID:H/eLoV2h.net]
>>833
pimplはもともと#define private publicから逃げるためのものなんだから、その例は適してないでしょ

859 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:42:42.97 ID:yE5slmiS.net]
>>832
カプセル化とは役割とか責務といった単位で適切にプログラムが分割されていることを示す。
その役割のなかに「状態を保持する」というのが含まれていれば確かにそれはprivateにすべきだろう。
だが適切に責務が分解されていれば、そんなたくさんのクラスに状態を持たせる羽目にはならないと考えているがどうか?

860 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:43:17.45 ID:BmEzTRfI.net]
確かにファイル単位のカプセル化で十分な場合も有るわな

861 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:43:25.01 ID:TF2ho38j.net]
コンストラクタでpimplをnewし、デストラクタでpimplをdeleteするとして
publicにしたら外部からdeleteされる危険性は?

862 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:44:05.57 ID:yE5slmiS.net]
あと、ひとつのクラスにいろんなことやらせない、ってのもあるな。同じことかも知れんが。

863 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:44:06.51 ID:B/NYVAdM.net]
privateだろうとソースの中身は隠蔽されず、仕様はPGが確認可能で、
仮にすべてpublicでもclassで構造化さえすれば誤った使い方などまずされない。

仕様はよく分らないけど、publicだから適当に変更してみようなんてPGがもしいるとしたら、
どんなにオブジェクト指向で書いてもバグだらけになるものだ。

864 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:44:16.49 ID:5aaazbOS.net]
>>834
じゃあ何の例を挙げてるの?
>>837
そっちはprivate使えばええやん?誰も禁止してないぞ?

865 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:44:42.38 ID:H/eLoV2h.net]
>>835
それはモジュール化
カプセル化とは別の話

866 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:45:37.60 ID:yE5slmiS.net]
>>841
独立した話ではない。

867 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:45:59.44 ID:BmEzTRfI.net]
外部に公開するクラスはカプセル化するんだろうよ
内部で使うクラスはカプセル化しなくても良い場合も有るってことでしょう
cppファイル内で定義していて内部で使っていて外部に公開しないものとか



868 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:47:16.40 ID:yE5slmiS.net]
>>835で「示す」と表現したのは確かにまずかった。「結び付いている」とでもしておけば良かった。

869 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:47:18.73 ID:cLgBtIY2.net]
privateにするのって使われないためでしょ
使われちゃうと変更がしにくくなる

カプセル化と単一責任原則混同してるやつとかもいるし魔境か

870 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 12:47:52.95 ID:B/NYVAdM.net]
カプセル化、モジュール化は構造化プログラミングの延長。CやVBでDLL化してもモジュール化、カプセル化したのと効果は同じだ。

871 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 13:04:01.68 ID:bqhj4B2t.net]
>>832
つgtk

872 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 13:10:18.27 ID:5aaazbOS.net]
俺は最初からpublicしか書かない事も多い+privateしか書かないことなんてほぼ無いんだからデフォルトpublicでいいじゃん?ってだけなんだが、
で何か否定な人が多いからpublicなメンバーしか書かないクラスの例を挙げたんだけど、一体何処へ発展させようとしてるんだ
これまでデフォルトがprivateである利点を誰も挙げてないよね?
メンバーをprivateにする理由じゃないぞ?
(c++の指定方法で)デフォルトがprivateである利点だぞ?

873 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 13:12:30.98 ID:yE5slmiS.net]
>>845
単一責任原則を進めるとカプセル化も向上する、と言っている。同一視しているのではなく、そのような関連があると主張している。
読めばわかることだ。

874 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 13:12:54.30 ID:iguHMbMo.net]
書き忘れたときにprivateのほうがいいからだろ
とりあえずpublicにしろとか正気か

875 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 13:20:17.00 ID:jQDKzCya.net]
デフォルトpublicがいいならstruct使えばいいだけやん
C++のポリシーにケチつけたところで仕方ないんでないの

876 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 14:12:31.06 ID:z4U9lx1Y.net]
書き忘れたとき、ってのはさすがに
書き忘れんなよ!って思うけどw
多数派のためのサービスというか
言語としての方針だろうね

Rust: デフォがimmutableでmut付けるとmutable
C++など: デフォがmutableでconst付けるとimmutable

877 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 14:32:05.11 ID:jQDKzCya.net]
mutableはC++ではキーワードだからその書き方はちょっと微妙



878 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 14:34:20.94 ID:yE5slmiS.net]
>>852
>C++など: デフォがmutableでconst付けるとimmutable

それはインスタンス生成したときのそのインスタンスの話?
メンバ関数のことじゃないよね。

879 名前:デフォルトの名無しさん [2015/11/27(金) 18:46:28.24 ID:W14KsSJ2.net]
struct a { /* const */ int b; } const c;
c.b = 1; //mutableなら通るんだがw

880 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 19:37:00.74 ID:8/X8Q1kn.net]
>>853
> mutableはC++ではキーワードだから

ドゥフフw
そんなもんがあるとは夢にも思いませんでした
お前ら混乱させてごめんなw

881 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 20:19:01.07 ID:HYprTEnv.net]
昔はprivateにアクセスする可搬性のある方法が無かったけど
数年前に誰かがテンプレート使った技を発明してからアクセスし放題になった
privateなんか無駄だから嫌ならpimplしとけ

882 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 21:10:31.45 ID:fmEy0pN3.net]
どういう技?

883 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 21:15:28.12 ID:5aaazbOS.net]
昔同じ事宣うやついた気がするけど全然アクセスし放題じゃねえなあと思った記憶がうっすらと
どっちにしろ心底どうでもいいけど

884 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 21:23:44.44 ID:tedP7Lps.net]
cpp.aquariuscode.com/legal-private-access

こういうやつか

885 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 22:00:13.63 ID:fmEy0pN3.net]
なにそれ
利点がわからん

886 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 22:24:49.26 ID:m7rZTJ7h.net]
printfとstd::coutってprintfのが汎用性高くない?
でも、綺麗なプログラム書く人はstdで出力してるんだよね。なぜ?

887 名前:デフォルトの名無しさん [2015/11/27(金) 22:25:53.25 ID:YUPaOys9.net]
googleの社員はstream禁止されていたらしい



888 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 22:27:28.86 ID:e7/qHuAp.net]
>>860
それじゃないだろ
>>860みたいなインチキ技に終止符を打った完全版のはず
初めて見たときはC++のクソさに衝撃受けた

889 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 22:51:58.56 ID:ZcxS6DTK.net]
>>862
お前の目が糞だから糞コードがきれいに見えてるだけ
でも行くのは眼科じゃなくて精神だぞ

890 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 23:28:55.57 ID:xVNmanwA.net]
>>851
賛成
ってか、実際俺は使い分けてるわ
比較的高機能なものはclass、ファンクタレベルの小さいものはstructって感じ

891 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 00:06:16.35 ID:W/xTcAqm.net]
>>866
イイネ

俺もTMPでメンバがtypedef(using)だけの時なんかは struct
いわゆるオブジェクト指向的なやつだと class

892 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 00:53:07.74 ID:f8SBho2z.net]
structを作った時はこれはstructだからpublicなメンバ変数のみにしよう!と考える。

だけどコンストラクタで初期化したいし、ToString()とかアルゴリズム用のファンクタとかやっぱ欲しい。

であれよこれよと拡張しているうちに、うん、これはclassだな、ってなる

893 名前:デフォルトの名無しさん [2015/11/28(土) 01:37:13.21 ID:WnPFZ4IQ.net]
>>860
面白かった
thx

894 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 01:40:32.92 ID:l6i0EIJ3.net]
>>709
コンパイル時に決まるIOストリームを嫌う人が多い謎

895 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 02:01:24.09 ID:W/xTcAqm.net]
メンバ変数持ったらclassでしょ

896 名前:デフォルトの名無しさん [2015/11/28(土) 02:23:39.02 ID:wnz9/ADF.net]
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13

897 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 03:14:03.21 ID:a7Onrmik.net]
やっぱclassに比べてstructと呼称した方がより低抽象度・具象的なイメージがある故に、メモリレイアウトを詳細に指定する用途では気分でstructにする、
あるいは、複数のオブジェクトを集約しとくだけの入れ物が欲しいときもstructにする
(これは全メンバpublicでただ集めただけのコードになる。カプセル化は個々のメンバ単位で実現
後者の書き方は、手続きとセットにして初めて意味を成すような、独立したクラスとは言いがたいデータの集まりを表すのにもうってつけ、

な希ガス、



898 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 08:47:26.75 ID:s4cXb24H.net]
privateとか使わないので常にstruct使ってる
本気で外部から隠したい場合ってどうせPimplにするからstructのが楽だし

899 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 11:22:07.96 ID:nQUlWFmj.net]
てか、メンバの特殊化っててきないよね

900 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 17:54:12.03 ID:s4cXb24H.net]
>>875
できるよ
https://ideone.com/kl9lFE

901 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 17:56:02.46 ID:6Lrpyhjo.net]
このバカの言ってることはそういうのとじゃない

902 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 17:58:50.04 ID:s4cXb24H.net]
すまない、よくわからないので説明してほしい

903 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 18:10:35.72 ID:nQUlWFmj.net]
ごめん、部分特殊化がだめなだけだった

904 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 18:28:03.34 ID:s4cXb24H.net]
function templateの部分特殊化は1yでも無理だね
なんで未だにできないんだろ
クラステンプレートで実装できるから不要って判断か?

905 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 19:12:48.35 ID:pohBt4lh.net]
そりゃtemplate classと違って同じ関数にいくらでもtemplate含めてオーバーロード出来るからだろう。
どれに対する特殊化か指定するのがややこしすぎるし、adl含めてどれが呼ばれるのかも今以上にカオスになる。

906 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 21:01:07.59 ID:dohK3Eb1.net]
部分特殊化なんていう作業が必要なc++って腐っているだろ。自動でやれるようにしろよ。できない理由が有るのか?

907 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 21:42:10.21 ID:MBn8Lywe.net]
自動でできない所をわざわざ部分特殊化しているのだが



908 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 22:59:11.76 ID:W/xTcAqm.net]
おいおい楽しい部分を自動化してどうすんだよ

909 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 23:51:16.21 ID:pohBt4lh.net]
部分特殊化と同じことが自動でできるとかそんな超技術があるなら、あらゆるプログラムがなにも指示せずとも自動で出来上がることになるからプログラマもプログラミング言語も不要になるな。

910 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 00:49:27.53 ID:tikXtbZT.net]
>>880
スコットメイヤーですら理由がよくわからんと言っていたような
S.T.Lavavej氏は同時検討の時間が足りなかったと言っていたような

911 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 01:16:22.95 ID:KmrpGp6z.net]
>>881
既にテンプレート含めたuser-defined conversionとかも発動条件がカオスだからなあ
逆に言えばこれ以上増えたところで今更な気もw

912 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 01:31:12.27 ID:KmrpGp6z.net]
>>881
調べてみたがfunction templateはオーバーロードされないね

>>886
知識不足で規格でそうなってるとしか言えない事はあるけど
メイヤー先生すらわからないのかよ

913 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 01:40:17.88 ID:7XGZYDJa.net]
関数テンプレートが部分特殊化できたら
true_typeのタグディスパッチみたいな糞コードが少しマトモになるな
template<typename T> auto f(T t) {
 return f_impl<is_xxx_v<T>>( t );
}

914 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 02:17:04.66 ID:KmrpGp6z.net]
SFINAEのコードが綺麗になるなあ
でもconstexprが変態になりそう

>>888 捕捉 一般の関数との間のオーバーロードです

915 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 16:22:25.42 ID:KrqWIN7R.net]
>>888 function templateはオーバーロードされない?

どういう意味だ?

916 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 20:47:38.92 ID:pijv15rJ.net]
バカのたわごとにいちいち反応するだけ無駄

917 名前:デフォルトの名無しさん mailto:sage [2015/11/30(月) 01:16:38.33 ID:5zESIF5z.net]
>>891
ごめんなさい、勘違いしてました
ADLとの兼ね合いは曖昧になるのでエラーになると思ったんですが
テンプレートと一般関数だと必ず関数が優先されるので起こらないんですね
全く逆の事言ってしまいました



918 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 16:51:29.05 ID:utXyFQyI.net]
>>886
なんだ、何か深遠な理由があるのかと思ったらw
初学者は文法や規約を学ぶときその意義を自分なりに咀嚼するもんだけど
こういうとこで無駄に悩むのは哀れだな

919 名前:デフォルトの名無しさん [2015/12/01(火) 21:18:59.66 ID:3itGlQru.net]
コンストラクタの中で、thisを使っちゃだめなの?

920 名前:デフォルトの名無しさん mailto:s []
[ここ壊れてます]

921 名前:age mailto:2015/12/01(火) 21:20:18.16 ID:eT3ZeD+F.net [ >>895
仮想関数を使えないだけ。


...だっけ? ]
[ここ壊れてます]

922 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 23:35:25.39 ID:s1rcgCDh.net]
メンバ初期化子の中でthisを使えないだけなんじゃ…

923 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 23:57:28.13 ID:dJ602Izb.net]
純粋仮想関数を使うのがダメなだけ

924 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 00:35:35.05 ID:0XpBrEKR.net]
コンストラクタの中でthisを何に使うん?

925 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 00:47:04.28 ID:qI5sGkUB.net]
thisポインタに代入するとメモリ割り当てを自力で行え(命令
あとコンストラクタの引数の名前が思いがけずメンバの名前と一致してしまったときとか

926 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 00:49:43.48 ID:zaOCqs+2.net]
普通に使うだろ
lock_guard(T& lk):lk_(lk)
{
lk_.lock();//this->が省略されてるだけ
}

927 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 01:41:02.91 ID:bhBQTEux.net]
class C {
public: C(int n) {this->n = n;}
private: int n;
};



928 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 01:57:56.53 ID:zaOCqs+2.net]
>>902
その例だと初期化子リストつかえという話になるから良くない

929 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 02:16:20.18 ID:dpb/NTdw.net]
言いたいことは分かるからいいじゃん。

930 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 03:04:20.24 ID:KW5mtzU/.net]
初期化子リストなら : n(n)でいけるしな

931 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 09:13:21.89 ID:BlTQmdzi.net]
みんなありがとう
コンストラクタの中ではthisは使っちゃいけないんだな
使わないようにするわ

932 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 10:09:28.84 ID:hYuIR41h.net]
なんでそうなる
必要性が薄いだけで別に使っていいんだぞ

933 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 16:44:36.73 ID:BlTQmdzi.net]
>>907
なんか静的エラーチェックにかけたらダメだったよ

934 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 17:54:06.75 ID:SG5bn8pD.net]
>>908
どんな静的チェック掛けてるか知らんけど、何事にも基本と例外があるのよ

935 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 19:37:52.50 ID:zThpLiMk.net]
>>908
静的エラーチェックってlintとかのことだろ?
それは与えられたポリシーに従っていないコードを弾くためのツールだぞ。

936 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:20:21.26 ID:OrMGyZIC.net]
lintってw

937 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:29:37.40 ID:jBVkagxP.net]
なんでlintに草生えるの?



938 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:30:57.08 ID:5Y1e+QK6.net]
CFront誕生から11/27で30年やそうや
ttp://cpplover.blogspot.jp/2015/11/c30cfront.html

ぽまいらは30年前どんなプログラム言語で何のプログラムを書いていましたか

939 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:30:59.28 ID:zaOCqs+2.net]
静的解析つーたらこべりてぃとかPSV-Studioじゃねえの?

940 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:32:10.56 ID:zaOCqs+2.net]
節子それPVS-Studioや

941 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:32:34.80 ID:5Y1e+QK6.net]
>>912
lintは関数プロトタイプとか引数の宣言がK&Rの頃のやつなので…

942 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 20:33:50.61 ID:5Y1e+QK6.net]
なんと奇遇な!
>>913の記事はCFrontをPVS-Studioでソフトウェア的に裁判にかける話

943 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 21:35:13.94 ID:hYuIR41h.net]
lintも立派な静的解析なのに
-Weffc++も知らなそうだ

944 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 22:33:42.15 ID:5Y1e+QK6.net]
実際知らんが
糖衣構文まみれの実用プログラミング言語の静的解析とかぜってー泥臭い判定ロジックの塊になるに違いないと確信するから
タダでそんなの作ったりテストしたがるプログラマは少数だと思うから
この場合は個人的にはどっちかというとOSSよりプロプラエタリのやつを選ぶ
希ガス

945 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 07:19:25.74 ID:zCQ/Nhg2.net]
>>918
lint も(当時としては)立派な静的解析だけど、今時コンパイラのチェックで十分じゃね?
って話だろ
それ以上を求めるなら、Coverity なり CodeSonar なりを入れればいいかと

946 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 09:34:06.90 ID:7lfAnJct.net]
今時ANSICのがlintとかそれこそ何時の話だよ
lintとは今やコード文法の解析全般をさす言葉だよ
そのlintの機能を内包しているソフトを出して自慢気に語り出すのはちょっと

947 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 10:15:32.81 ID:vntsHvc0.net]
無理矢理感丸出し
誰が今時lintとか言うんだよ



948 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 10:29:34.66 ID:G8vTqAy3.net]
lintツールはもはや一般名詞だろ。検索してみろよ。

949 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 10:44:09.75 ID:vntsHvc0.net]
アホ丸出し

950 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 10:50:55.75 ID:6lknT5KC.net]
>>924
自分の無知をさらけ出して恥を上塗りしなくてもいいのよ?
ちゃんとググった?

951 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:03:23.68 ID:4JqwU0dP.net]
lingual test

952 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:04:38.13 ID:SjWoAKws.net]
昔HTML-lintが流行った時期があったなぁ
でも10年以上前の出来事の気がする

953 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:38:48.44 ID:cYXsvyZR.net]
一般名詞でlintと言ったらうちの周りだと具体的にはcpplint.pyになるかなぁ。
clangの-Weverythingは使うとして

954 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:53:27.80 ID:9QpDoKsV.net]
lintとは、主にC言語のソースコードに対し、コンパイラより詳細かつ厳密なチェックを行うプログラムである。

955 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:56:38.08 ID:9QpDoKsV.net]
Another HTML-lintはHTML(XHTML)の文法チェックを行うソフトウェアである。作者は石野恵一郎。Perl5で作成されている。公開は1997年。

956 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 11:57:18.99 ID:9QpDoKsV.net]
ごっちゃにしちゃいかんよ

957 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:02:23.41 ID:4rUKwdGH.net]
イベントが発生するとラムダをコールバックするような仕組みを実現したいです
登録はstd::functionのリストにラムダを突っ込めば簡単に出来ます
しかし、キャプチャされているオブジェクトが死ぬとき、登録を削除しなければなりません
登録削除はどうしたらよいですか?



958 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:11:17.06 ID:sEruxHcf.net]
Vectorが置いてたHTML Lintは一時期使ってたっけな

959 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:14:54.87 ID:9ozwOaJ6.net]
>>932
どうするもこうするも「キャプチャされているオブジェクトが死ぬとき、登録を削除」すればいいんじゃね

960 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/12/03(木) 12:18:45.51 ID:4JqwU0dP.net]
リストがstd::listかstd::vectorかどうかで対処が異なる。
削除はデストラクターで。リファレンス見ろよ。

961 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:21:48.73 ID:f0dL0w0J.net]
登録されてるファンクタが先に死ぬことはないって決まっているの?

962 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:23:21.36 ID:Fq2nS4CH.net]
>>921
>>923
coverityとかをlintって言う奴居ないだろ
covrityのページ見てみlintって文字出てきたか?
coverityでググってみ?
お前の思うほど一般名詞として使われていないから気を付けな

963 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:28:16.53 ID:4rUKwdGH.net]
リストの中に複数あるイベントコールバック用の関数オブジェクトの中から
どうやって自分を参照している削除対象の物だけを見つけ出したらよいんですか?
どの関数オブジェクトが何をキャプチャしているか、後から調べる方法は無いですよね

登録時に関数オブジェクトをこっそり別に保存しておいて
削除するときは保存しておいた関数オブジェクトとリスト内の関数オブジェクトを比較して
自分が登録した関数オブジェクトを探すんですかね

しかしstd::functionに突っ込んだラムダ同士を==で比較すると
どういう比較のされ方をしますか?
同じソースコードから生成されたラムダでも、キャプチャの中身が違っていたら
==で比較したときに別物扱いになりますか?

964 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:34:09.39 ID:sEruxHcf.net]
listに直接functionを突っ込まず、マーカーかなにかと一緒に入れておけば

965 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:34:49.55 ID:4rUKwdGH.net]
それとも自身のポインタ(this)と、登録したい関数オブジェクトを
std::pairでペアにして登録して
削除するときはthisを頼りに探すんですか?

966 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/12/03(木) 12:37:28.49 ID:4JqwU0dP.net]
>>938
std::listを使ってんの? 順序に意味があるの?
関数オブジェクトの比較をテンプレート引数に指定すれば?

967 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:41:14.42 ID:38PDYmvi.net]
>>937
うちだとcoverity版のlintとかつい言っちゃう
というかピコピコとかファミコンとかと同じ用法で
リントにかけろって言っちゃう



968 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 12:45:28.62 ID:zCQ/Nhg2.net]
>>925
一般名詞になったと言うページの URL 書いてみろよ w
そもそも lint って言いだした >>910 がツールだって言ってるのにアホすぎでしょ

969 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 16:08:58.02 ID:HBCwEi9c.net]
Boost.Signals2だとconnectionオブジェクトで切断したりweak_ptrで自動的に切断したりしてるね
このあたりは案外設計が難しい

970 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 16:36:39.69 ID:mJh8lY8m.net]
>>943
バカに触れないで
うつるから

971 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 16:53:20.76 ID:7lfAnJct.net]
出てくるのがHTML-Lintがやっとってどういう事だよ
hlintとかjslintとかpylintとかまだまだありますよ?

https://github.com/search?q=lint
十分一般名詞だよ
否定したところで恥かくのは自分だぞ

972 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 16:57:52.90 ID:mJh8lY8m.net]
ころころID変えながら涙目で弁解w

973 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 16:59:37.76 ID:7lfAnJct.net]
あーあ関係ないこと言い出してきたよ
lintがCの文法チェッカを指すなら
このgithubにあるlint達はみんなCのチェッカなんですかねえ?
自分が何言ってんのかちょっとは考えたら?

974 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 17:02:01.08 ID:vntsHvc0.net]
お前がな

975 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 17:05:23.56 ID:7lfAnJct.net]
IDコロコロ変えてるなんて発言が出るのは
自分がそうやってるからだろ?
それこそ馬鹿としか言いようがないね

976 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 17:24:04.23 ID:vntsHvc0.net]
お前がな

977 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 19:55:43.38 ID:zCQ/Nhg2.net]
>>948
> lintがCの文法チェッカを指すなら

お前以外の誰もそんなことは言ってないけど?
単に各言語用の lint って言うツールがあるだけのことだろ
そのページで例えば gdb で検索したら色々な環境用の gdb がヒットするにけど、それ見て gdb は一般名詞だー
とか言っちゃうのかよ w



978 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 20:06:18.77 ID:XbhyavhQ.net]
>>948が何を言いたかったのかも、どこで齟齬が生まれたのかも今わかったから、とりあえず落ち着け。
そして少なくとも俺はだいたい察したからそこまででレスバトルはやめとけ。

979 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 20:47:51.03 ID:SIn5hbzt.net]
また来たンゴ!
先日はありがとナス

なぜC++は黒魔術と呼ばれるのですか?

980 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:02:40.72 ID:7JN8BUI+.net]
C並にメモリにやばいアクセスが出来て
その上C以上に覚えなきゃいけないことが多いからかな

981 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:10:51.07 ID:WjbZJ8W6.net]
テンプレートによるメタプログラミングが難解で魔術のように見えるから

982 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:13:12.19 ID:W6SHvClG.net]
黒魔術部分ってテンプレート酷使系を揶揄するのが発祥じゃなかったっけ。
ふつーに使う分にはなんも黒くないよ
深入りし過ぎず身の丈に合わせて使えばいいんよ
C++11以降はむしろ手軽に使えるよ

深入りが楽しいのも事実
今時ならconstexprあたりから術式の深みにはまるが良い

983 名前:デフォルトの名無しさん [2015/12/03(木) 21:23:47.71 ID:qdrKfbrZ.net]
template<typename T> void hoge(){}
はヘッダにかけるのに
void hage(){}
はヘッダに書くとエラーでます。何故ですか

984 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:28:42.30 ID:SIn5hbzt.net]
ありがとナス!
javaで息抜きしてくるンゴ

985 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:33:58.72 ID:7JN8BUI+.net]
>>958
テンプレートは実際に型をはめた時に実体化されるから

986 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 21:43:59.05 ID:X7HD53YV.net]
>>960
想像でものを言うな低能

987 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:04:47.16 ID:QauuBag/.net]
>>958
下記は実体を記述しているからダッメ
ヘッダにするならinilineかstatic必須
でないとヘッダをインクルードするたびに
実体の複製が大量生成されてリンケージの
段階でコンフリクトが大量発生する



988 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:08:35.38 ID:X7HD53YV.net]
>>962
まるでテンプレートやinlineだと実体の量産が無いような物言いだな

989 名前:デフォルトの名無しさん [2015/12/03(木) 22:09:31.99 ID:OfqEsdYX.net]
任意のディレクトリ内にある複数のcsvファイルのファイル名をCStringの配列に格納する方法を教えてください。

990 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:11:32.47 ID:T6cOKf23.net]
また炎上学習法ですか

991 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:15:49.85 ID:X7HD53YV.net]
>>964
まずCStringの定義を説明しろ低能

992 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:16:18.73 ID:gNtJcgPL.net]
>>958
それコンパイラーのバグだよ

993 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:17:36.98 ID:Fq2nS4CH.net]
>>958
template関数はinlineキーワードを付けたときと同じ状態になります。

994 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/12/03(木) 22:18:03.95 ID:4JqwU0dP.net]
>>964
csvファイルは拡張子が.csvである。
ディレクトリー(フォルダー)の中の項目は、Windowsでは
FindFirstFile/FindNextFileで、LinuxのようなPOSIX環境ではopendir/readdirで列挙できる。
csvファイルのみを抽出したい場合は、「*.csv」というワイルドカードパターンを使う。

995 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 22:20:43.14 ID:4nUxrQps.net]
csvファイルの拡張子が.csvだと
いつから>>969は錯覚していた?

996 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/12/03(木) 22:28:52.79 ID:4JqwU0dP.net]
補足と修正。
拡張子が.csvではないcsvファイルを想定する場合については、
ファイルの中身をチェックするしかない。その場合は非効率な処理となる。
csvファイルには方言が多く、例えばエクセルのcsvは複数行のテキストを一つのフィールドに記述できる。

997 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 23:14:00.82 ID:OcXjfpNR.net]
>>965
これ好き



998 名前:デフォルトの名無しさん mailto:sage [2015/12/03(木) 23:17:26.41 ID:LRrF0HN+.net]
C++で質問です。

メニュー一覧から「Hoge Fuga」を検索してそのWM_COMMAND値を返す方法
を探しています。

よろしくお願いします。

999 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 00:12:56.11 ID:KK6LKRIE.net]
>>972
ちゃんとできる奴がスレにいるならその学習法は良いが
>>964>>973は高度

1000 名前:で出来る奴いないからやる価値はない []
[ここ壊れてます]

1001 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 00:16:41.56 ID:K0bZWv/B.net]
高度

1002 名前:デフォルトの名無しさん [2015/12/04(金) 00:46:00.64 ID:H0SRHl0K.net]
>>932
カメだが、
コールバックされる側Aはstd::functionのstd::shared_ptrを持っておく。
イベント発生側Bはstd::functionのstd::weak_ptrのリストを持っておく。
Aのshared_ptrをBのweak_ptrのリストに登録する。
イベントが発生したらweak_ptrが有効か見て判断すればできないかな?

1003 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 01:56:40.84 ID:qWhz4QUx.net]
あっれーテンプレート関数やクラスを実体化したやつは1個だけなんじゃないの
多くはインライン展開されるからコードの増殖に見えるが
アドレスをとったときの実体は唯一(さもなくばODR制約違反の不正なコード
のはず…
それが証拠に"a.cpp"でtemplate<class T> foo(T x) { return x + (T)1; }を定義してT=intで実体化し、
"b.cpp"でtemplate<class T> foo(T x) { return x + (T)2; }を定義してやはりT=intで実体化したりすると
リンク時に実体が2つある系のエラーになった
ような希ガス、

1004 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 02:19:45.74 ID:ezzwHQH9.net]
>>958
テンプレート(やクラスやインライン関数など)の定義は、実用上ヘッダに書いて複数の翻訳単位で
定義しないといけないので、定義の重複を認めている。
(字句的に同一であることを含めていくつかの常識的な制約はある。)

そういった特例に含まれないものの定義をヘッダに書くと複数の翻訳単位に定義が含まれ、
定義が重複することになる。 ODR(One Definition Rule) 違反ってやつで、結果は未定義。
一般的な実装ではリンクエラーとして検出される。


この特例に含まれるという点ではテンプレートとinline関数は同様だけど、関数テンプレートが
自動的にinlineとみなされるわけじゃない。

ODR はプログラム全体に「定義」がいくつ含まれるか、という話。
「実体」とか言ってるとテンプレートインスタンスとごっちゃになったりするのでやめといたほうがいい。

1005 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 07:53:55.32 ID:lXdK5bEE.net]
CSVの文法って真面目に凝りだすと面倒だよな……>>971みたいに「1セルが複数行ある」パターンもあるし

1006 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 08:35:38.61 ID:w/Hp0b+s.net]
CSVの話をする際にRFC 4180の名前も出せないレベルだから面倒に感じるんだろう

1007 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 11:26:43.26 ID:W/x9yQ78.net]
static inline void hoge()
inline static void hoge()
どっちが主流?
あるいは(ビルドは通るけど)本来はどちらかが文法的には間違いだったりする?



1008 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 11:35:00.30 ID:v4H8WRK+.net]
static void iniline hage() がスタンダード

1009 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 11:37:34.61 ID:v4H8WRK+.net]
static void inline hage() だスタンダード的に
inline などのモードは、型と手続き名の間に入れるのがハゲの鉄則

1010 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 11:46:52.73 ID:1FHuCnKY.net]
static voidはdecl-specifier-seq、
baka()はinit-declarator-list
specifierの一種であるinlineを追加するんなら
decl-specifier-seqの後ろに追加するのが良いだろう。
つまりvoid static inlineだ。
*constやstruct X finalの様にC++は修飾を右に書く文法だからな。

1011 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 14:08:30.99 ID:YEfoDPnk.net]
>>796
いちいち関数オブジェクトをA側で保持しておくのは面倒なんで
B側で関数オブジェクトとAのポインタをstd::pairで保持しておいて
削除するときはAのポインタをキーにする方がシンプルで簡単かも

1012 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 17:08:00.24 ID:H94Wo3u0.net]
質問
C++ Win32 コンソールアプリケーションにて
自身のウィンドウを最小化させるにはどうしたらいいですか?

1013 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 18:58:24.09 ID:YEfoDPnk.net]
GetConsoleWindow
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms683175%28v=vs.85%29.aspx

これが使えるんじゃないかな、しらんけど
ただし、XP以上じゃないとダメだよ

1014 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 19:46:31.79 ID:4rTjiz/h.net]


1015 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 20:18:19.17 ID:KK6LKRIE.net]
ウィンドウ 最小化 Win32 でぐぐったら
d.hatena.ne.jp/s-kita/20121220/1356014299
が出てきた。
ShowWindowのC++バージョンがあればいいんだよね

1016 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 20:49:29.84 ID:7W1HEY29.net]
>>980
Excel がそれに従ってるとでも?

1017 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 21:00:52.06 ID:H94Wo3u0.net]
>>987
ありがとうございました



1018 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 21:59:39.04 ID:rgdHsALa.net]
>>990
RFCの方が後付けなんでExcelの方が従ってるわけではないのは当然だけど、
準拠しない部分があるってこと?

1019 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 23:19:56.54 ID:qWhz4QUx.net]
>>978
レスdクス勉強になた、

それはそうとして皆さん!
ttp://www.emit.jp/prog/prog_opt0.html
↑クラスのメンバの直接利用をdisられてるんですが
パフォーマンス(ネタ)言語たるC++に何か対策は無いんですか;

メンバをいったんポインタか参照に置き換えればrestrict修飾子が使えるけど
もっと一発でハイパホーマンスにできるやつご存知ないですか??

1020 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 23:49:12.83 ID:8OSUTWwz.net]
>>993
std::fill_n(m_pBuffer, m_nSize, n) でいいんじゃないかな。
https://goo.gl/Lbt2gK

1021 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 00:14:21.98 ID:+8tnJCl8.net]
次スレの季節

C++相談室 part121
peace.2ch.net/test/read.cgi/tech/1449240881/

1022 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 01:03:42.55 ID:28a5J014.net]
>>992
従ってる
Qに触れるな

1023 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 03:16:50.47 ID:NRX1k+Is.net]
>>994
レスdクス、
しかし>>993のリンク先の記事が示すことは、
struct Foo { int m_x; } g_foo;
int main() {
 int a = g_foo.m_x; // ・・・(1)
 何がしかの非restrictなポインタ操作(外部リンケージの関数呼び出しは含まない!)
int b = g_foo.m_x; // ・・・(2)
printf("a=%d, b=%d\n", a, b);
}
上の(1)と(2)のような書き方をしたとき、(1)と(2)の両方でメモリアクセスが生じる
(g_foo.m_xのリードアクセスについて、(1)〜(2)を通してのレジスタ割り当ては行われない
ということなのdeath、

これソースコードを極力変えずに速くする(g_foo.m_xをレジスタ割り当てさせっぱなしにする)方法は無いですかいのう…

1024 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 03:56:29.05 ID:J/NXgEYT.net]
うめ

1025 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 06:45:38.80 ID:zpovgyFs.net]
>>996
フィールド内改行が<CR> <LF>ではなく環境依存
RFCには完全に準拠していない

1026 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 07:24:15.82 ID:A2giUrci.net]
>>999
ここまで頭が悪いと生きているのも辛いだろうな
RFC 4180読み直せよ

1027 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。



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






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

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

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