C++相談室 part102
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/05/12(日) 08:19:43.22ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part101
http://toro.2ch.net/test/read.cgi/tech/1365231795/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.84【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1367137639/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2013/05/12(日) 08:56:55.80thx >>1;
0003デフォルトの名無しさん
2013/05/12(日) 09:00:06.12整数型に&&使うなんて、どうかと思うんです
そこはintにすべきじゃないかと
0004デフォルトの名無しさん
2013/05/12(日) 09:11:20.64>static castの一つ?
()キャスト,暗黙キャスト,static_cast,dynamic_cast
で行われる普通の変換。
コンパイル時に調整量が決まる
という点ではstaticだけどね
0005デフォルトの名無しさん
2013/05/12(日) 09:17:15.52結局2重継承関係の時に注意が必要か
0006デフォルトの名無しさん
2013/05/12(日) 09:26:43.06>virtual継承って2重継承時以外使うことない
他の言語のinterfaceを移植するときに
使いまくりじゃないか
00074
2013/05/12(日) 09:33:34.45dynamic_castは具象クラスが不明なので
コンパイル時には決まらない
0008デフォルトの名無しさん
2013/05/12(日) 10:31:00.93> 横だけど
> type&へのキャストってどういう意味?
>
> 986 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:40:04.32
> 参照へのキャスト
>
> 987 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:48:17.29
> それってなんかありがたいことがあるんか?
参照へのキャストは参照のダウンキャストやクロスキャストをしたいときにも必要
ttp://ideone.com/MaYOhX
0009デフォルトの名無しさん
2013/05/12(日) 10:33:57.23あ、ポインターで間に合ってます
0010デフォルトの名無しさん
2013/05/12(日) 10:39:46.40環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
>>1乙
0011デフォルトの名無しさん
2013/05/12(日) 11:09:08.03これいつも思うんだけど本当は
#include "stdafx.h"
の間違いだよな
0012デフォルトの名無しさん
2013/05/12(日) 11:30:21.20数年前からあるような
0013デフォルトの名無しさん
2013/05/12(日) 11:46:24.330014デフォルトの名無しさん
2013/05/12(日) 12:08:36.52STLは2003年
http://ir9.jp/prog/ayu/datlog/tech_cpp/1045746245/1045746245_01.html
stdafxは2004年
http://ir9.jp/prog/ayu/datlog/tech_cpp/1096304546/1096304546_01.html
0015デフォルトの名無しさん
2013/05/12(日) 16:57:21.34STLのiostreamを使うとき、自作クラスFooの入出力演算子を
istream& operator>> (istream& istr, Foo& input)とか
ostream& operator<< (ostream& ostr, const Foo& output)とかいった
シグネチャで実装するシチュがたまにあると思いますが、
これってエラーを返す場合はどうすでば良いの?
badビットでも立てる?立てて良い?その方法は?
0016デフォルトの名無しさん
2013/05/12(日) 16:59:04.920017デフォルトの名無しさん
2013/05/12(日) 17:08:08.08例外
0018デフォルトの名無しさん
2013/05/12(日) 17:22:21.910019デフォルトの名無しさん
2013/05/12(日) 17:42:24.190020デフォルトの名無しさん
2013/05/12(日) 17:51:53.210021デフォルトの名無しさん
2013/05/12(日) 18:18:47.19>>1にある姉妹スレをオヌヌメするが
0022デフォルトの名無しさん
2013/05/12(日) 18:33:21.410023デフォルトの名無しさん
2013/05/12(日) 18:39:30.86istr.setstateでストリームのフラグを立てる
0024デフォルトの名無しさん
2013/05/12(日) 18:48:47.790025デフォルトの名無しさん
2013/05/12(日) 19:02:53.850026デフォルトの名無しさん
2013/05/12(日) 19:12:39.300027デフォルトの名無しさん
2013/05/12(日) 19:14:17.810028デフォルトの名無しさん
2013/05/12(日) 20:08:14.29プログラミングも捗る。
0029デフォルトの名無しさん
2013/05/12(日) 20:10:40.40食べながら仕事してたら殺害だね。
っていうか19はどこ行った?
0030デフォルトの名無しさん
2013/05/12(日) 20:24:57.12これがホントの食場か
0031デフォルトの名無しさん
2013/05/12(日) 20:47:15.700032デフォルトの名無しさん
2013/05/12(日) 20:59:39.140033デフォルトの名無しさん
2013/05/12(日) 21:05:32.770034デフォルトの名無しさん
2013/05/12(日) 22:13:53.85しかし家の他の人はドン引き
食べてみれば美味しいのに
0035デフォルトの名無しさん
2013/05/12(日) 22:41:36.040036デフォルトの名無しさん
2013/05/12(日) 23:34:35.66パンに挟むだけでも結構食える
003715
2013/05/12(日) 23:35:52.04>>17
おk
確かにストリーム以外のエラーをストリームのエラーであるかのように返すのは邪道であることは認識しています
>>23
ありが�d
0038デフォルトの名無しさん
2013/05/13(月) 01:42:48.050039デフォルトの名無しさん
2013/05/13(月) 10:33:10.68std::ifstream openFile();
std::istream readData(std::string datasource)
{
if (datasource == "net")
{
return openSocket();
}
else {
return openFile();
}
}
みたいなことをやりたいのですが、何か上手い手はないでしょうか?
std::unique_ptr<std::istream>としても良いのですが、見栄えがあまりよろしくなくて、、、
0040デフォルトの名無しさん
2013/05/13(月) 10:51:31.530041デフォルトの名無しさん
2013/05/13(月) 10:53:22.19禁じ手だけどstdの名前空間の中にiosocketstreamを入れて仮想関数で
呼び出すようにすればすっきりするんだが
0042デフォルトの名無しさん
2013/05/13(月) 12:47:50.59透過的に扱いたいなら
>>39が一番素直だと思うけど。
ifstreamは意味的にコピー出来ないんだから
unique_ptrは適切だと思う。
0043デフォルトの名無しさん
2013/05/13(月) 22:32:22.360044デフォルトの名無しさん
2013/05/13(月) 22:38:06.000045デフォルトの名無しさん
2013/05/13(月) 22:38:32.060046デフォルトの名無しさん
2013/05/13(月) 22:57:06.79例えばコンストラクタ内で呼ぶとか
0047デフォルトの名無しさん
2013/05/13(月) 23:14:10.50純粋仮想関数を呼び出す方法を知りたい
0048デフォルトの名無しさん
2013/05/13(月) 23:19:31.460049デフォルトの名無しさん
2013/05/14(火) 07:40:12.990050デフォルトの名無しさん
2013/05/14(火) 19:34:01.79普通に扱えるんだけどどうなってるの?
0051デフォルトの名無しさん
2013/05/14(火) 19:39:00.35>>50
普通に扱えたという例を晒してもらおうか
0052デフォルトの名無しさん
2013/05/14(火) 19:42:09.74thisが使えないだけ
0053デフォルトの名無しさん
2013/05/14(火) 19:57:04.460054デフォルトの名無しさん
2013/05/14(火) 20:00:44.37/って何ですか?
日本語でおながいします
0055デフォルトの名無しさん
2013/05/14(火) 20:03:06.300056デフォルトの名無しさん
2013/05/14(火) 20:32:29.98C++スレでUnix固有の表現を使うなとは
思うけど、わかってて噛みつくかね
ところでstatic関数でどうやって
非staticメンバを扱うのよ
0057デフォルトの名無しさん
2013/05/14(火) 20:33:19.54perlとかsedとかviだけじゃないしUnix固有でも何でも無い
0058デフォルトの名無しさん
2013/05/14(火) 20:37:23.210059デフォルトの名無しさん
2013/05/14(火) 20:39:59.210060デフォルトの名無しさん
2013/05/14(火) 20:49:47.120061デフォルトの名無しさん
2013/05/14(火) 20:50:06.38from ed
0062デフォルトの名無しさん
2013/05/14(火) 20:52:55.69「何でパールなの?」
ときかれて返答に困るでござる
俺の中では
Perler=負け組
Perler=20世紀末に活躍したジジィ
0063デフォルトの名無しさん
2013/05/14(火) 20:59:40.31でもそんくらい基礎知識
0064デフォルトの名無しさん
2013/05/14(火) 21:00:33.520065デフォルトの名無しさん
2013/05/14(火) 21:05:43.21ライブラリの話とかどうでもいいです
0066デフォルトの名無しさん
2013/05/14(火) 21:13:51.50s/正規表現/置換後/
なんてのは無いな
0067デフォルトの名無しさん
2013/05/14(火) 21:35:38.640068デフォルトの名無しさん
2013/05/15(水) 00:00:56.97〜
for( auto& Val : vVal )
{
・・・
}
上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??
0069デフォルトの名無しさん
2013/05/15(水) 00:01:17.220070デフォルトの名無しさん
2013/05/15(水) 00:01:36.07正規表現自体がUnixやPerlで発展してきた文化なのだから、
正規表現による置換パターンレスを受け入れた時点でUnixだからどうたらって言うこと自体が野暮。
そもそも53のツッコミ自体、50にも51にも52にも適用できないし変じゃねぇか?
0071デフォルトの名無しさん
2013/05/15(水) 00:06:44.61アダプタ書けば良い
0072デフォルトの名無しさん
2013/05/15(水) 00:31:50.23struct X
{
int var1;
static int var2;
static void f(X &);
private:
int var3;
};
int X::var2;
void X::f(X &x)
{
// staticメンバ関数では
//var1 = 1; // error. 非staticメンバを直接は使えない
//this; // error. thisも使えない
//this->var1 = 1; // error. よってthis経由でも非staticメンバは使えない
var2 = 20; // staticメンバなら使える
x.var1 = 10; // もちろんインスタンス経由なら非staticメンバを使える
x.var2 = 20; // インスタンス経由の形でもstaticメンバを使える
x.var3 = 30; // そのクラスのインスタンスならprivateメンバにもアクセスできる
}
int main()
{
X x;
X::f(x);
}
007350
2013/05/15(水) 01:19:23.56DXライブラリの関数がstatic関数の中で普通に使えるのだけど
static関数で使えないのはメンバ変数だけで
他の変数は制限なしで使えるってこと?
0074デフォルトの名無しさん
2013/05/15(水) 01:26:33.830075デフォルトの名無しさん
2013/05/15(水) 01:28:25.39static 関数は this が使えない
従って this-> が省略されているものも使えない
それ以外は使える状態にあれば使える
0077デフォルトの名無しさん
2013/05/15(水) 01:59:02.49標準で用意してくれって思う
0078デフォルトの名無しさん
2013/05/15(水) 02:52:52.470079デフォルトの名無しさん
2013/05/15(水) 04:08:48.97なんでC++ってこんな書き方が許されてるの?
教えてエロい人
単に struct X だから public プロパティ/メンバ変数ということだけなのでは?
static メンバかどうかはこの場合はどうでもいい話
0081デフォルトの名無しさん
2013/05/15(水) 05:04:08.770082デフォルトの名無しさん
2013/05/15(水) 07:09:54.58UNKOなのはお前だよばーか
0083デフォルトの名無しさん
2013/05/15(水) 07:24:01.71C#ではムリダナ
書ける理由は特にないんじゃない?
メンバだからなんとなく使えるようにしたんじゃね
0084デフォルトの名無しさん
2013/05/15(水) 17:42:24.830085デフォルトの名無しさん
2013/05/15(水) 18:36:59.57>メンバだからなんとなく使えるように
C++、KUSO過ぎる
0086デフォルトの名無しさん
2013/05/15(水) 18:45:07.180087デフォルトの名無しさん
2013/05/15(水) 19:40:38.340088デフォルトの名無しさん
2013/05/15(水) 20:06:30.930089デフォルトの名無しさん
2013/05/15(水) 20:12:01.040090デフォルトの名無しさん
2013/05/15(水) 20:34:41.300091デフォルトの名無しさん
2013/05/15(水) 20:43:33.490092デフォルトの名無しさん
2013/05/15(水) 21:35:28.170093デフォルトの名無しさん
2013/05/15(水) 21:41:18.440094デフォルトの名無しさん
2013/05/15(水) 22:31:17.64{
if( pObj->Func() )
{
return true;
}
}
これを括弧を省略して、
for( auto& pObj : vpObj ) if( pObj->Func() ) return true;
というふうに書いたら、上記と同じような動作になってくれました。
ちょっと怖い気もする書き方ですが、
制御構文の括弧を省略できる条件の「1文のみ」というのは、最初の「;」が現れるまでという解釈でよいですか?
0095デフォルトの名無しさん
2013/05/15(水) 23:03:15.980096デフォルトの名無しさん
2013/05/15(水) 23:05:11.17それで答えは出る
ただ、{ } は省略しない方が無難
0097デフォルトの名無しさん
2013/05/15(水) 23:11:53.75一貫性を保て
0098デフォルトの名無しさん
2013/05/15(水) 23:13:04.45(´・ω・) いやどす
ハ∨/~ヽ
ノ[三ノ |
(L|く_ノ
|* |
ハ、__|
""~""""""~""~""~""
0099デフォルトの名無しさん
2013/05/15(水) 23:16:26.47010094
2013/05/15(水) 23:22:34.84ありがとうございました。
0101デフォルトの名無しさん
2013/05/15(水) 23:26:53.77だからIDは必要なんだよ
0102デフォルトの名無しさん
2013/05/16(木) 00:07:30.71{
if( pObj->Func() )
でpObjってポン助ですよね。それをauto"&”で受ける意味あるんですか
てか、ポン助をautoする時ってauto&が常識?
0103デフォルトの名無しさん
2013/05/16(木) 00:15:00.190104デフォルトの名無しさん
2013/05/16(木) 00:27:49.430105デフォルトの名無しさん
2013/05/16(木) 00:52:25.600106片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/16(木) 01:47:33.65ポインタを書き換えるときに参照にする。
0107デフォルトの名無しさん
2013/05/16(木) 01:55:00.39for ( auto & item : vec1 )
item.v = 100;
その例だとshared_ptrなんだろうな
0108デフォルトの名無しさん
2013/05/16(木) 02:08:54.83unko *ar[n];
for ( int i = 0; i < n; i++ )
{
auto &pObj ★
= ar[i];
{
pObj->Func();
}
}
★の部分をどう書くかは好きにしろ
スマポなら&にしておくのが無難
0109デフォルトの名無しさん
2013/05/16(木) 07:21:59.87for ( for-range-declaration : braced-init-list ) statement
↓
{
auto && __range = range-init;
for ( auto __begin = begin-expr,__end = end-expr; __begin != __end; ++__begin ) {
for-range-declaration = *__begin;
statement
}
}
なのでポインターの配列でポインターを変更したい場合は
「for-range-declaration = *__begin;」を
「auto && pObj = *__begin;」にする必要がある。
0110デフォルトの名無しさん
2013/05/16(木) 11:38:01.10{
template<typename U> void test(){}
template<typename U> void moge(){ this->test<U>(); } // エラー: (10114) '(' expected
};
aaa<int> a;
というエラーが出ます。this->を消すとコンパイルが通ります。this->付けないのが正しいのでしょうか
CodeWarrior5.9.0です。
0111デフォルトの名無しさん
2013/05/16(木) 12:04:12.58ttp://ideone.com/NyEQDS
そのコンパイラを窓から投げ捨てるか確実にエラーが再現できるソースにしろ
0112デフォルトの名無しさん
2013/05/16(木) 12:09:37.55そのコードで確実にでます。
0113デフォルトの名無しさん
2013/05/16(木) 12:11:01.52gcc4.7.2でノーエラー
template <typename T>
struct aaa
{
template <typename U>
void test() {
std::cout << "test" << std::endl;
}
template <typename U>
void moge() { this->test<U>(); }
};
int main()
{
aaa<int> a;
a.moge<int>();
}
0114デフォルトの名無しさん
2013/05/16(木) 12:24:21.22なんか15年位前にそんなのあったな
0115デフォルトの名無しさん
2013/05/16(木) 12:44:46.73それ、boolの戻り値なんだよな?
ifのあとに「return false;」ないけど
0116デフォルトの名無しさん
2013/05/16(木) 12:46:28.77forか、fooに見えたわ、疲れてんな
0117デフォルトの名無しさん
2013/05/16(木) 12:52:14.540118デフォルトの名無しさん
2013/05/16(木) 15:31:48.10グラフの構造としては1つの頂点(ノード)に対して、そこから辺(エッジ)で結ばれる頂点全体を含む
配列を持つ構造を選びました。この配列の集合の構造をSと呼ぶことにします。
グラフの頂点はデータを持たしたいんですよ。でもデータの型は1つじゃないんですよね。
そこで考えたのがデータを整数としてもち、その整数にデータを対応させようと思っているんですよ。
また、辺の種類は1つではなく複数の種類の辺を持ちたいんですよ。それには二つのSを持たせるのか、
あるいはSではなく1つの頂点に対して、そこらから辺で結ばれている頂点とその辺の種類の組全体を含む
配列を持つ構造を選ぶのか分らないです。
また、辺に俗に言う重みというデータを持たせたいんですよ。
ということなのでよろしくお願いしますね。
0119デフォルトの名無しさん
2013/05/16(木) 15:45:50.800120デフォルトの名無しさん
2013/05/16(木) 16:08:14.80あと隣接行列を併用
有向か無向かでも違うし
グラフ理論は基礎が出来てるかな?
0121デフォルトの名無しさん
2013/05/16(木) 16:29:09.76整数でデータを持たせるよりアドレスでもたせたほうが効率的なはずなんですけど
データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?
0122デフォルトの名無しさん
2013/05/16(木) 16:34:14.24>データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?
おい誰かこいつに構造体(クラス)を教えてやれ
0123デフォルトの名無しさん
2013/05/16(木) 16:38:31.02すなわち、データにはvoid型の型情報を持たないアドレスと
型情報だけの組み(ペア)を持たせなければならないことを意味しますよね。
しかし、型情報だけを持たせるなんてことはC++にはできないんじゃないですか。
解決策はありますか?
0124デフォルトの名無しさん
2013/05/16(木) 16:42:02.490125デフォルトの名無しさん
2013/05/16(木) 16:43:26.86conceptはまだだからお楽しみ
decltypeとか
0126デフォルトの名無しさん
2013/05/16(木) 17:15:01.730127デフォルトの名無しさん
2013/05/16(木) 17:44:36.92この3つのどれかを使いでどうやってやるのか教えてくれませんか
0128デフォルトの名無しさん
2013/05/16(木) 17:47:56.280129デフォルトの名無しさん
2013/05/16(木) 18:12:23.63取り得る型をT,U,...とするとvariant<T,U,...> data;のように宣言すればよい
variantの実装はboostにあるから自分で調べて
0130デフォルトの名無しさん
2013/05/16(木) 18:25:23.85boostにはグラフ用ののライブラリがあるんですがそれは
https://sites.google.com/site/boostjp/tips/graph
0131デフォルトの名無しさん
2013/05/16(木) 18:36:44.47一つの頂点に複数の型の値を持たせたいのなら、variantが良いよというだけ
グラフの方は知らない
0132デフォルトの名無しさん
2013/05/16(木) 18:42:42.26「グラフを構造してるけど、どう構造していいか悩んでいる」
らしいからそれじゃダメっぽいし
たぶんソース見ても理解できないよ
0133デフォルトの名無しさん
2013/05/16(木) 21:38:04.880134デフォルトの名無しさん
2013/05/16(木) 22:36:21.74Bという名前のクラスをメンバーでもって
Aをnewでインスタンス生成した場合
AをdeleteすればBも問題なく解放される?
0135デフォルトの名無しさん
2013/05/16(木) 22:40:59.130136デフォルトの名無しさん
2013/05/16(木) 22:46:01.550137デフォルトの名無しさん
2013/05/16(木) 23:15:10.350138デフォルトの名無しさん
2013/05/16(木) 23:18:18.150139デフォルトの名無しさん
2013/05/16(木) 23:47:06.93どこまでがC++の規格かの判別は難しいかもしれないが
C++の規格どおりに動かないなら環境に文句言っていいだろ
0140デフォルトの名無しさん
2013/05/16(木) 23:54:05.14Bを値で持ってればBのデストラクタは呼ばれる
問題なく解放されるかどうかはプログラム次第
0141デフォルトの名無しさん
2013/05/17(金) 00:41:47.21>問題なく解放されるかどうかはプログラム次第
そんな糞な環境はお前だけ
0142デフォルトの名無しさん
2013/05/17(金) 01:01:06.35自分の環境で呼ばれるかどうかを
確認した上ででなおせ!
0143デフォルトの名無しさん
2013/05/17(金) 01:20:38.21デストラクタが呼ばれることと
プログラマの意図どおりの(=問題をおこさない)動作をするクラス設計・実装になっていることとは
等価じゃないですよ
0144デフォルトの名無しさん
2013/05/17(金) 01:23:04.410145デフォルトの名無しさん
2013/05/17(金) 01:24:14.95で?
0146KUSO KOTE
2013/05/17(金) 02:26:18.51これ見たらKUSOして寝なさい
http://ideone.com/uimMTz
キチンと解放される
0147デフォルトの名無しさん
2013/05/17(金) 16:57:30.97http://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
一部引用
> C++を使うとめちゃめちゃクソな設計の選択に追いやられる。必ず、最初は「よさげ」な言語のライブラリ機能、
> たとえSTLたとえばとかBoostとか他の完全なクソを使い始める、それはプログラムに「役立つ」かもしれない。
> だがしかし、それによって引き起こされるのは:
>
> ・動かない場合の無限の苦痛(しかも、STLとか、特にBoostが安定していて移植性があるなんて言うやつは
> クソまみれだし全然面白くもなんともない)
>
> ・非効率的な隠匿プログラミングモデル、二年ほど開発を続けて、始めて一部の隠匿設計が非効率的な
> ことに気がつくが、その時点では、もうオマエのコードはよさげなオブジェクトモデルに依存しきっていて、
> 書きなおす以外に修正の方法がない。
0148デフォルトの名無しさん
2013/05/17(金) 17:19:23.22いつの話題だよ・・・
0149KUSO KOTE
2013/05/17(金) 17:48:45.530150デフォルトの名無しさん
2013/05/17(金) 18:03:08.99そして自分の不満の正当化のため全体的な質が悪くなったことを理由にすることもあるが
そのいう元々の質が単なる自己満足レベルのものでしかないこともまた珍しくない
0151デフォルトの名無しさん
2013/05/17(金) 18:31:47.970152デフォルトの名無しさん
2013/05/17(金) 19:16:57.61文の定義を知ると ラベルステートメントという
C++の言語仕様の糞さに憤慨です
0153デフォルトの名無しさん
2013/05/17(金) 19:31:47.68ところでラベルステートメントって?何ソレ?
0154デフォルトの名無しさん
2013/05/17(金) 22:23:09.86たぶんラベル付きステートメントのことでgotoの飛び先やcaseとかのこと
もちろんC++固有でなくCから持ってきたものだけど
0155デフォルトの名無しさん
2013/05/17(金) 22:57:09.64それともC++がクソ文化なの?
0156デフォルトの名無しさん
2013/05/17(金) 23:19:24.670157デフォルトの名無しさん
2013/05/17(金) 23:34:23.55ウンコウンコいいながらこのスレに執着してる奴ってどんだけウンコ好きなんだよ
571 デフォルトの名無しさん sage 2013/04/30(火) 15:54:06.35
C++は本当にKUSOだな。
上級者でも(むしろ上級者ほど)規格片手にコード
書かなきゃいけない言語はおかしいだろ。
何のためのプログラミング言語だよ
628 デフォルトの名無しさん sage 2013/05/01(水) 19:41:52.32
やはりC++はブリブリUNKO
おまえらパソコンの大先生が古文書片手に議論しても
意見がまとまらないなんて、国際標準が意味をなしてない
0158デフォルトの名無しさん
2013/05/17(金) 23:48:35.03信じていいんだな?
信じるぞ
0159デフォルトの名無しさん
2013/05/17(金) 23:57:01.170160デフォルトの名無しさん
2013/05/18(土) 00:02:24.77君が正しくプログラムを書いていればな
例えば解放が必要なリソースを持っているクラスのデストラクタに解放処理を書くのを忘れたりすれば
デストラクタが呼ばれてそのクラス自体は解放されたとしても問題なく解放されたとはいえない
0161デフォルトの名無しさん
2013/05/18(土) 00:12:57.11>>135
コンストラクタとデストラクタにログ入れて
対になっているか確認してから出直せ
0162デフォルトの名無しさん
2013/05/18(土) 00:21:02.72C#やる人はダサい。
0163デフォルトの名無しさん
2013/05/18(土) 00:40:12.250164デフォルトの名無しさん
2013/05/18(土) 02:14:20.50どうすればいいですが
void* p = ...;
void* p32 = alignment( p, 32 );
こんな感じでやりたいです。
0165KUSO KOTE
2013/05/18(土) 02:31:14.41何がしたいのかよくわからないけど
こんな感じ?
http://ideone.com/IWrHRr
0166KUSO KOTE
2013/05/18(土) 03:11:34.14分岐と乗算除算は発狂する人がいるので
書き直してみた。寝る。
http://ideone.com/1HHyPq
0167デフォルトの名無しさん
2013/05/18(土) 03:24:04.280168デフォルトの名無しさん
2013/05/18(土) 05:24:02.530169デフォルトの名無しさん
2013/05/18(土) 06:51:36.18#include "my.h" //using namespace std;
これでok
0170デフォルトの名無しさん
2013/05/18(土) 07:18:56.92using namespace std;
}
これでok
0171デフォルトの名無しさん
2013/05/18(土) 07:26:14.32void fun(std::size_t)
は
void fun(decltype(sizeof(0)))
でok
0172デフォルトの名無しさん
2013/05/18(土) 07:34:41.59何言ってんのかイミフ
0173デフォルトの名無しさん
2013/05/18(土) 08:00:54.85これでいいだろ
これ以上は自分のコーディングstyleの
押しつけでしかない
0174デフォルトの名無しさん
2013/05/18(土) 09:49:33.09shared_ptr<CUnko> pUnko( new CUnko );
vpUnko.push_back( pUnko );
remove( vpUnko.begin(), vpUnko.end(), pUnko );
これでなぜかvpUnkoの要素数が1のまま変わらず、削除が行われません。
なぜpUnkoを見つけて削除することができないのでしょうか?
0175デフォルトの名無しさん
2013/05/18(土) 09:50:04.64すみません、最初は
vector<shared_ptr<CUnko>> vpUnko;
です。
0176174
2013/05/18(土) 10:00:02.33removeでは要素を詰めるだけでというのは覚えていたんですが、
要素数まで同じというのは把握していませんでした(汗)
0177デフォルトの名無しさん
2013/05/18(土) 10:04:12.13本っっ当にC++はKUSOだな
0178デフォルトの名無しさん
2013/05/18(土) 10:09:43.76俺にも>>169-172はイミフだ
167は文字通り読んでstdio.hとかが名前空間を汚染することについてか、
直前のコードから「using namespace std;」の話でc++標準ライブラリを脱字したかのどちらかだと思う。
(前者と仮定して168では後者の話を振った)
>>173
.cppにusing namespace std;書いてstd::minと衝突して学習者が爆死しかける教本書いた奴も死刑だと思うんだ。
0179デフォルトの名無しさん
2013/05/18(土) 10:15:11.520180デフォルトの名無しさん
2013/05/18(土) 10:19:23.40えっthisポインタを引数で渡す
同じクラスのメンバであれば、渡されたthisポインタ経由で非publicなメンバに特にキャストもせずにアクセスし得る
0181デフォルトの名無しさん
2013/05/18(土) 10:23:50.11>std::min
<algorithm>のアレか……(std::swap、std::max)
「グローバル名前空間空間にusing namespace std;」はホントに危険だよな……
0182デフォルトの名無しさん
2013/05/18(土) 10:25:27.41にも「それは違うとか言いだしそうな奴だな」
0183デフォルトの名無しさん
2013/05/18(土) 10:39:58.37ちょっ何を言っているのかわからない
class Foo {
int x;
public:
static int GetX(Foo* p) { return p->x; }
};
class Bar {
Foo obj;
public:
void ShowFooX() { std::cout << Foo::GetX(&obj) << std::endl; }
};
0184デフォルトの名無しさん
2013/05/18(土) 10:45:01.22例えばスレッドをクラス化したりするときの基本テクニックなんやな
0185デフォルトの名無しさん
2013/05/18(土) 12:42:01.18ヘッダに入れた時に、意図していない他人に
まで迷惑をかけるからだろ。
自分でわかっててcppに入れるのまで
文句を言われる筋合いはない。
それにstd::maxと被る問題なら
グローバルでなく関数スコープでusingしても同じ。
0186デフォルトの名無しさん
2013/05/18(土) 12:51:51.26>自動変数はもちろん扱える
>s/自動変数/非staticメンバ/
>どうやって非staticメンバを扱うのよ
>thisポインタを引数で渡す
static int GetX(Foo* p) { return p->x; }
>「privateなメンバには他クラスからアクセスできません」
にも「それは違うとか言いだしそうな奴だな」
>何を言っているのかわからない
どちらかというと>>183が
何を言っているのかわからない
0187デフォルトの名無しさん
2013/05/18(土) 13:05:11.84ところでinline namespaceって何ソレうまいの?
0188デフォルトの名無しさん
2013/05/18(土) 14:31:59.66http://www.youtube.com/watch?v=rycI46jG_Rg
.
円高デフレと産業の空洞化は、在日の戦略だった?
http://www.youtube.com/watch?v=iOKGvBsWtgg
0189デフォルトの名無しさん
2013/05/18(土) 15:49:53.75staticが「他のクラス」だからprivateにアクセスできないと思っているんだな
もう、どこから突っ込んでいいやらw
0190デフォルトの名無しさん
2013/05/18(土) 15:54:21.03他のコンポーネントを選択するなどして、フォーカスが外れることを何て言うんでしょうか?
「デフォーカス」?「アウトフォーカス」?
0191デフォルトの名無しさん
2013/05/18(土) 15:58:39.900192デフォルトの名無しさん
2013/05/18(土) 16:13:30.200193デフォルトの名無しさん
2013/05/18(土) 17:57:17.150194デフォルトの名無しさん
2013/05/18(土) 18:07:58.260195167
2013/05/18(土) 19:33:06.14分かりにくくてすいません
ようするにこういうコードが書きたかったんです…
#include<cstdlib>
namespace command{
enum Command{
exit ='c'
};
};
void some(const char *s){
using namespace command;
switch(s[0]){
case exit: // 関数exit(int)と衝突する
std:exit(0);
}
}
0196デフォルトの名無しさん
2013/05/18(土) 19:39:03.30なんなら
const int Exit = 'c';
といったように大文字で逃げたら?
0198KUSO KOTE
2013/05/18(土) 20:00:03.71衝突した所だけ command::exit にするのではいかんの?
絶対衝突させたくないならusingを使うこと
自体がおかしいと思う。
あとC++でexitはマジやめて。
0199デフォルトの名無しさん
2013/05/18(土) 20:03:06.930200デフォルトの名無しさん
2013/05/18(土) 22:07:24.11>逃げ方を訊いているわけではない
ああそれもそうか
と言うかC的にはexitとreturnは(main関数内では)同義だから使ったこと無いや……
using云々以前に例外投げるとかすべきやね、C++なんだし
0201デフォルトの名無しさん
2013/05/18(土) 22:29:15.14exit使う奴は低脳
0202デフォルトの名無しさん
2013/05/18(土) 23:38:54.62using command::exit; を足しちゃダメ?
0203デフォルトの名無しさん
2013/05/19(日) 00:01:53.12「using namespace std;はおまじない」と教える/覚えるのはヘッダに入れるよりもヤバイだろ
分かっててusing namespace std;してるなら問題ないが、それを区別する手段が…
0204167
2013/05/19(日) 00:29:51.57とりあえず今までそれで逃げてました
>>198
command::exitだと見づらく感じてしまうんですよね…
あと、実際のコードはマイコンの制御プログラムで、開発中マイコンをぶら下げっ放しにするのがウザいのでPC上でもビルドして動かせるようにしたものです。本体には終了という概念がなく、そのためのロジックも存在しないので、手っ取り早くexitしとけという発想です。
>>202
おおー、衝突が無くなりました
ありがとうございます
using宣言にはこんな効果もあるのですね
結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか
>>202の解法で問題は無くなりそうなんで、もういいのですが
0205デフォルトの名無しさん
2013/05/19(日) 00:55:58.77今時のマイコンはC++でも大丈夫なのか……
つか、usingディレクティブとusing宣言は別物だけどな↓
http://www.geocities.jp/ky_webid/cpp/language/018.html
0206デフォルトの名無しさん
2013/05/19(日) 01:05:28.320207デフォルトの名無しさん
2013/05/19(日) 01:15:16.88Cで作れるものにC++が使えない理由が無いだろ。
「今時の」とか、何言ってんの?
0208デフォルトの名無しさん
2013/05/19(日) 01:17:18.17じゃあ何が問題かっていうとROMサイズ。だから組み込み系は
Cが長かったんだけど、ROM単価が劇的に下がった今はもう
コードサイズの問題はほとんどなくなった。
0209デフォルトの名無しさん
2013/05/19(日) 01:29:26.56C言語対応してる→C++対応している、にはならないと思うけど?
0210デフォルトの名無しさん
2013/05/19(日) 02:04:58.66>>209
マイコンメーカの提供するCコンパイラではどーにもならんけど、gcc使えるマイコンであればバックエンド流用でg++も通るんじゃね
標準ライブラリの移植状況がまんま制約になるし、可能であるかとやるかどうかは別だろうが
ROMサイズだの処理速度だのコンパイラの性能向上だのでやりやすくはなってきてる…のかな
0211デフォルトの名無しさん
2013/05/19(日) 03:09:35.55C++使うことによって発生するコードサイズの問題って何のこと言ってるの?
同じコードコンパイルして差が出ることはないだろうし。
テンプレート使うようなコードをCでマクロやコピペで書けばコードサイズが減らせるわけでもないだろ。
0212デフォルトの名無しさん
2013/05/19(日) 03:23:59.17同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。
テンプレートは状況次第では一気に増える
・派生クラスを基底クラスにキャストして処理する
・同等のことをCでキャストやunion使って処理する
・同等のことをテンプレートで処理する
3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?
0213デフォルトの名無しさん
2013/05/19(日) 03:25:27.932ちゃんの流行なのか。
世間一般ではそういうのを屁理屈って言うんだがな。
0214デフォルトの名無しさん
2013/05/19(日) 03:31:54.98記憶容量の単価というよりは単にアドレス空間の絶対量の問題では?
0215デフォルトの名無しさん
2013/05/19(日) 03:39:51.37「コードサイズが膨れるテンプレートの使い方をしない」って前提を置いてる211に対して言ってるんだよな?
>>214
空間だけあっても中身ないと駄目だし結局ROM/RAM容量の問題じゃないのかそれ
0216デフォルトの名無しさん
2013/05/19(日) 04:00:40.21使い方するような奴がバカだっていうだけだよなあ
そんな奴はどんな言語を使ったってダメだろう
0217デフォルトの名無しさん
2013/05/19(日) 04:05:04.66> 同じコードコンパイルするならC++使う意味も無いだろ。
同等のコードでも名前空間、型チェック、オーバーロードとか使って読みやすく、安全に
書けるようになるよ。
> 同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。
相当ひどいコンパイラ実装じゃないとそんなことにならないはずだけど・・・。
一般的に言えるってことならコード例を見せて欲しいな。
> テンプレートは状況次第では一気に増える
> ・派生クラスを基底クラスにキャストして処理する
> ・同等のことをCでキャストやunion使って処理する
> ・同等のことをテンプレートで処理する
> 3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?
コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。
0218デフォルトの名無しさん
2013/05/19(日) 05:01:16.36そんな糞は捨てろとか言い出しそうだな。
埋め込みコンパイラ舐めんなよ。
0219デフォルトの名無しさん
2013/05/19(日) 05:32:29.89実際問題マイコンでのC++は放置されてたんだからその判断した当時の各種ベンダに言えよ。
「テンプレートによるコードサイズへの影響を正しく予測できない奴はCもダメなんで配慮の必要なし」て。
>>217
> 同等のコード
同等≠同じ、だから名前空間とかオーバーロード使ったコードはCでは通らんだろ。
その辺のみ使ってCと同等のコードを書く制約ならバイナリコード量にほぼ(名前修飾除く)影響は出ないが、
制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> 一般的に言えるってことなら
thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
そのちょびっとをケチりたいって要求は今でも8bitマイコンなら現役だと思うけど
> コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。
STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。
一々「テンプレート(含むSTL)使用禁止」「仮想関数使用禁止」「クラス使用は最低限」
とかしないとC++採用でのバイナリコード量の増加を押さえられないのなら、
それを理由にC++自体を回避するのも十分有効な手段だろ。
C++の利点を活用できない状態でCに加えてC++ライブラリの移植の面倒まで見たいって企業は少ないだろうな。
0220デフォルトの名無しさん
2013/05/19(日) 05:47:31.70素人に使わせると糞になりがちで、
企業としてはそれをコントロールするコストを
加味するとCが無難。
名前空間、型チェック、オーバーロード
の為だけにC++を導入するメリットは少ない。
C++は規格オナニーだけにしてください。
0221デフォルトの名無しさん
2013/05/19(日) 06:33:01.93>結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか
如何ともしがたい。
規格は<cstdlib>がexitをグローバル名前空間に
導入されることを禁止していないし
それを抑制するための言語機能もない。
0222217(=211)
2013/05/19(日) 09:15:37.63> 制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
この「ちょびっと」って数%って感じだよね?それが致命的になるレベルのコードサイズ制約を
実際に相手にしたことはないんで感覚的にはわかんないけど、あると言われれば否定はで
きないな。
> STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。
そんなに制約がキツイ環境なら開発者みんな気をつければいいだろうとは思うけど、それが
簡単な話じゃない場合(人数とか資質とか)もあるのは、まぁわかる。
両方が問題になる場合にはC縛りがちょうどいいケースがあり得ることは理解したよ。ありがとう。
0223デフォルトの名無しさん
2013/05/19(日) 09:51:33.600224デフォルトの名無しさん
2013/05/19(日) 09:58:43.35お互い言いたいことしか言わずに、他人の話は基本的に否定がデフォルト設定だから。
0225デフォルトの名無しさん
2013/05/19(日) 10:11:03.18終わった話のようだが自分がグローバルにばらまくのはかまわないのか?
まあ外にさらさない実装部分なら好きにしていいというのは基本ではあるんだけど
ttp://ideone.com/6MFJV4
0226デフォルトの名無しさん
2013/05/19(日) 12:43:07.600227デフォルトの名無しさん
2013/05/19(日) 13:01:24.560228デフォルトの名無しさん
2013/05/19(日) 14:42:55.84>有益な情報なんてない
え?結構このスレ勉強になるんですけど
0229デフォルトの名無しさん
2013/05/19(日) 15:40:22.99iostreamはSTLに入るのでしょうか?
0230デフォルトの名無しさん
2013/05/19(日) 15:41:40.27皆が適当に呼んでるだけの呼称なので
どれが何に入ると決まっているわけではない
0231デフォルトの名無しさん
2013/05/19(日) 15:49:30.97この前coutとauto_ptrはSTLじゃない
と言われてえぇっと思ったので
質問させていただきました
定義は曖昧ということですね
0232デフォルトの名無しさん
2013/05/19(日) 16:08:06.24テンプレート使ってるのでSTLと呼んでも悪い事も無い
auto_ptrはC++11でdeprecatedなのでキニスンナ
0233デフォルトの名無しさん
2013/05/19(日) 16:16:06.43横だけどthreadは?
処理の多くが環境依存だから
ヘッダーだけテンプレートで
本体は.cppになると思うのだけれど
これもテンプレートライブラリでいい?
0234デフォルトの名無しさん
2013/05/19(日) 16:22:13.000235デフォルトの名無しさん
2013/05/19(日) 16:33:10.260236デフォルトの名無しさん
2013/05/19(日) 16:35:12.31あまり気にするとハゲるぞ
0237デフォルトの名無しさん
2013/05/19(日) 16:36:46.600238デフォルトの名無しさん
2013/05/19(日) 17:00:02.010239デフォルトの名無しさん
2013/05/19(日) 17:02:32.480240デフォルトの名無しさん
2013/05/19(日) 17:22:15.400241デフォルトの名無しさん
2013/05/19(日) 17:53:57.090242デフォルトの名無しさん
2013/05/19(日) 17:58:45.500243デフォルトの名無しさん
2013/05/19(日) 18:00:07.140244デフォルトの名無しさん
2013/05/19(日) 18:00:40.150245デフォルトの名無しさん
2013/05/19(日) 18:00:59.19>規格が定義され
参考までにその規格の名前を教えてください
0246デフォルトの名無しさん
2013/05/19(日) 18:01:54.11いじめるのも大概にして下さい!
0247デフォルトの名無しさん
2013/05/19(日) 18:02:09.13無毛に用はない
0248デフォルトの名無しさん
2013/05/19(日) 18:04:40.330249デフォルトの名無しさん
2013/05/19(日) 18:05:52.830250デフォルトの名無しさん
2013/05/19(日) 18:06:29.880251デフォルトの名無しさん
2013/05/19(日) 18:08:44.170252デフォルトの名無しさん
2013/05/19(日) 18:08:55.810253デフォルトの名無しさん
2013/05/19(日) 18:10:23.13http://www.stroustrup.com/
0254デフォルトの名無しさん
2013/05/19(日) 18:13:08.980255デフォルトの名無しさん
2013/05/19(日) 18:14:29.52後ろしか無いじゃないか!
0256デフォルトの名無しさん
2013/05/19(日) 18:25:05.07俺が知ってる同僚はそう
0257デフォルトの名無しさん
2013/05/19(日) 18:42:15.020258デフォルトの名無しさん
2013/05/19(日) 20:20:51.56ttp://www.sgi.com/tech/stl/table_of_contents.html
0259デフォルトの名無しさん
2013/05/19(日) 21:28:58.140260デフォルトの名無しさん
2013/05/19(日) 21:34:15.600261デフォルトの名無しさん
2013/05/19(日) 22:04:14.700262デフォルトの名無しさん
2013/05/19(日) 22:27:39.050263デフォルトの名無しさん
2013/05/19(日) 22:47:32.730264デフォルトの名無しさん
2013/05/19(日) 23:15:30.360265デフォルトの名無しさん
2013/05/19(日) 23:35:55.060266デフォルトの名無しさん
2013/05/19(日) 23:42:25.690267デフォルトの名無しさん
2013/05/19(日) 23:49:45.54これ以上抜かないで下さい
0268デフォルトの名無しさん
2013/05/20(月) 00:46:41.64コンテナの要件って何か知らないけど
stringって文字列以外を格納できたっけ?
0269デフォルトの名無しさん
2013/05/20(月) 00:48:06.120x00〜0xffを格納できるし、\0ターミネーターも存在しない
string::c_str()はそうじゃないだろうけど
0270デフォルトの名無しさん
2013/05/20(月) 00:57:57.47いやcharやwchar_t以外のクラスとか突っ込んで
ちゃんと動くようになってんのかなぁと
0271デフォルトの名無しさん
2013/05/20(月) 01:01:18.02それを満たしているなら文字列専用コンテナ
って言えるだろ
0272デフォルトの名無しさん
2013/05/20(月) 01:04:23.00SGIという会社の「Standard Template Library Programmer's Guide」って文書で定義された「SGI Standard Template Library」がデファクトスタンダードなSTLの規格と申すか。
ま、お前の中ではそうなんだろうな。
0273デフォルトの名無しさん
2013/05/20(月) 01:10:23.94UTF-32とかUTF-9とか、charやshortのtypedef突っ込む用途あたりか?
0274KUSO KOTE
2013/05/20(月) 01:15:18.61なんでcharがsigned charと異なる処理系定義型
なのか理解に苦しむ。
0275デフォルトの名無しさん
2013/05/20(月) 01:47:18.57そう言うの参照するまでもなく、ISO規格の中で一般にSTLと呼ばれるライブラリは定義されてる
ただそこでは全てひっくるめてC++ Standard Libraryとなっていて、Standard Template Libraryとは呼ばれて居ないとかだと思う
STLそのものがデファクトだ云々だってことではなく「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
探せば別の規格文書の中でSTLって呼び方してるかも知れんけど、探してまで相手する話じゃないよ
>>271
ISO/IEC 14882:1998/2003をググって出てくるPDFのなかの17.3.1だと
コンテナと文字列は別のカテゴリ扱いらしいから所謂コンテナではない
って事になると思う
ただそれとは別にキャラクタコンテナって単語も使われてるが、これはcharとかwchar_tの事っぽいw
ていうかこのPDF丸上げして大丈夫なのか?ニューヨーク大学さんよ
>>274
歴史的経緯とかそういうのじゃね
0276デフォルトの名無しさん
2013/05/20(月) 01:54:02.230277デフォルトの名無しさん
2013/05/20(月) 02:09:10.37s[s.size()] で '\0' 出てくるよ。
0278デフォルトの名無しさん
2013/05/20(月) 02:10:57.87>「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
そうかなあ
STLがISOで定義された規格であるかのように
説明してたら突っ込まれるのは仕方ないんでは
Wikipediaの説明とかおかしいし
それにSTLがISOに入る前の元の定義をこえて
>>15のように拡大解釈する人が多くいるように
人によって範囲が違うわけで、
>>16のようなレスを付けたくなるのも気持ちはわかる
0280デフォルトの名無しさん
2013/05/20(月) 02:38:18.83「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
現状でも「STL」って言っただけじゃ「どこまでを指して言ってるの?」と疑問に思われる
ことがあるのが現実だし、その可能性は今後もどんどん高くなる一方だ。
「C++標準ライブラリ」あるいは単に「C++の」と呼ばずに敢えて「STLの」なんて呼ぶ
必要性もメリットも無いだろ。
0281KUSO KOTE
2013/05/20(月) 02:42:11.26>PDF丸上げして大丈夫なのか?ニューヨーク大学さんよ
お巡りさんこいつです。
0282デフォルトの名無しさん
2013/05/20(月) 02:49:05.230283デフォルトの名無しさん
2013/05/20(月) 02:52:55.94弱く、キレやすいいことは
このスレでよくわかりました
Effective STL何ソレうまいの?
0284デフォルトの名無しさん
2013/05/20(月) 04:43:54.44>>278
> STLがISOで定義された規格であるかのように
どこからどこまでSTLって定義が含まれてないだけで、そう呼ばれるものは一式含まれている。
定義が無い/定義が失われた言葉に一々そんな言葉は無いとか言って回るのは只の原理主義。
書いたの俺じゃないけど>>236のとおりだな。
>>280
> 「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
STLの範囲がどこまででも結局C++ Standard Libraryの一部だって言ってるだけ。
そしてC++ Standard Libraryに内包されないライブラリをSTLと呼ぶとは思わない。
STLの定義がどこまで、は何の関係もない。
> 敢えて「STLの」なんて呼ぶ必要性もメリットも無い
言いたいことは判るが、便利な略語としては必要性もメリットも有る。
C++だと言語全体を含むし、C++SLとか書いてもハァ?だし、標準ライブラリとか一々書くのも長い。
良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし
>>281
これがドラフトかどうかは知らんけど、ドラフトとかは大丈夫なんじゃね?
0285デフォルトの名無しさん
2013/05/20(月) 04:49:15.84弱いのはともかくキレてる奴いたか?
というか、俗語に「〜って何?」って喧嘩売る奴も大概だって気づけ
弱い者いじめ同然でただただ下衆い
0286デフォルトの名無しさん
2013/05/20(月) 07:06:55.51これはDIS(ドラフト)でなく正式版ですよ
0287デフォルトの名無しさん
2013/05/20(月) 07:23:18.97長文乙。
君がそう考えているものをそう考えない人がいるから反発されるのであって、
自分の考えを根拠なく繰り返したところで会話は成立しないぞ。
0288デフォルトの名無しさん
2013/05/20(月) 07:26:12.720289デフォルトの名無しさん
2013/05/20(月) 08:57:14.77>必要性もメリットも有る
必要性?
・STLは標準ライブラリの一部をさす
・その範囲は明確出なくどうでもいい
この状況下で敢えてライブラリをSTLと言う
必要性が「長いから」なのか?
最近のレスでは逆に冗長なのだが
「stlのstd::equals」→ただのstd::equalsだろ?
「stlのstd::maxが」→ただのstd::maxだろ?
「stlに複素数あるけど」→標準の複素数クラスだろ
「stlのstring」→stringでわかるだろ
「VS2010のSTLだと」→VS2010だと、でいいだろ
「STLのiostreamを」→iostreamでいいだろ
「STLつかうと一気に実行ファイルサイズが10倍」→printfをiostreamにしたんだろiostreamと言え
「STLマンセ〜」
なんかもう、STLが馬鹿の象徴に思えてならない
0290デフォルトの名無しさん
2013/05/20(月) 09:08:35.98> The Standard Template Library (STL) is a C++ software library that influenced many parts of the C++ Standard Library.
http://ja.wikipedia.org/wiki/Standard_Template_Library
> Standard Template Library (STL) は、プログラミング言語C++の規格で定義された標準ライブラリの一つ。
この日本語版、おかしいよな。
0291デフォルトの名無しさん
2013/05/20(月) 09:14:46.88都合のいいように訳してしまったんだね
0292デフォルトの名無しさん
2013/05/20(月) 10:18:05.90> C++だと言語全体を含むし、
言語全体のことなのかライブラリのことなのかわからなくて困る場面がよくわからないな。
組み込み配列とstd::arrayとか?そういう場面で「STL」がなんの役に立つのかもわからん。
> 標準ライブラリとか一々書くのも長い。
> 良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし
短くしたいなら>>289の言うように何もつけなくていい場面が多いし曖昧な場面でもstd::を
つければ十分で正確。
逆に、C++標準ライブラリの話をしてるときに「STLの」と限定を付けて呼ぶことが役に立つ
具体的な例を何か挙げられる?少し考えたけど思いつかない。
0293デフォルトの名無しさん
2013/05/20(月) 12:04:08.51「STLのアルゴリズム」と言わないとすっきりしない
0294デフォルトの名無しさん
2013/05/20(月) 15:38:06.630295デフォルトの名無しさん
2013/05/20(月) 20:19:19.970296デフォルトの名無しさん
2013/05/20(月) 20:26:51.23ありがとうございます
0297デフォルトの名無しさん
2013/05/20(月) 21:05:53.76何に使うのでしょうか?
0298デフォルトの名無しさん
2013/05/20(月) 21:08:19.120299デフォルトの名無しさん
2013/05/20(月) 21:33:29.89配列を std::array のシンタックスシュガーにすればいいのに
0300デフォルトの名無しさん
2013/05/20(月) 21:38:50.08バカか?
0301デフォルトの名無しさん
2013/05/20(月) 23:31:04.57・コンストラクタやoperator=で全体のコピーができる配列
・ムーブはできないけど要素数が固定のvector
が欲しいときに使う
0302デフォルトの名無しさん
2013/05/21(火) 00:15:11.110303片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/21(火) 01:16:23.660304デフォルトの名無しさん
2013/05/21(火) 01:16:35.64「C++の規格範囲に含まれない物をSTLと呼ぶ奴が居る」とかならともかく、自分の発言の解釈は自分の考えるもので構わんだろ。
他人の発言を俺々解釈してから否定して、「お前の発言は俺による俺々解釈が正しいから間違い」とか言い出すとか訳わからんわ。
0305デフォルトの名無しさん
2013/05/21(火) 01:35:31.65> 必要性が「長いから」なのか?
通りが良い場合もある。範囲が明確でなくても文脈で伝わることはあるし、現に使われている以上効用はあるんだろ。
メリットゼロだと思うならなぜ使われていると思ってるんだ。
> 最近のレスでは逆に冗長なのだが
STLという言葉を使うと必ず冗長性が減るとか、STLって言葉を使う馬鹿が居ないなんて誰も言ってないのに。
ってことで後は蛇足だが…
> VS2010だと、でいいだろ
大抵は良いにしても、(その発言の場合も違うのだろうけど)STLportとかと比較したい場合は良くない。
> printfをiostreamにしたんだろ
それ以外にも使ってないと10倍行くことは珍しい気がするが、原因を憶測で限定するより余程マシ。
iostreamにしてもC++ Standard LibraryのTemplateなLibrary使った結果なわけだからそのまんま。
>>292
> 言語全体のことなのかライブラリのことなのか
不勉強で生データ構造使って苦労してる奴に簡潔に助言するなら
「C++の標準ライブラリのコンテナ使え」
「C++のコンテナ使え」
「標準ライブラリのコンテナ使え」
「std::のコンテナ使え」
「コンテナ使え」
「STLコンテナ使え」
検索キーワードとしても使い勝手が良い。
> C++標準ライブラリの話をしてるときに
その前提だと俺も思いつかないな。その前提だと。
0306デフォルトの名無しさん
2013/05/21(火) 01:51:50.270307デフォルトの名無しさん
2013/05/21(火) 02:05:18.490308デフォルトの名無しさん
2013/05/21(火) 02:31:55.46いや止めてくださいマジで
0309KUSO KOTE
2013/05/21(火) 03:15:37.47イマイチやりたいことがわからないけど
http://ideone.com/EXYDUk
関数ポインターをnullチェックしたり、
reinterpret_castで整数にして
好きなだけアドレス値を取るがいい。
0310デフォルトの名無しさん
2013/05/21(火) 03:26:24.730311デフォルトの名無しさん
2013/05/21(火) 03:30:01.27解釈した結果に異論が有るならちゃんとそこポイントして言えよ。
自身の発言への解釈・補足行為自体にケチ付けるとか意味わからんわ。
0312デフォルトの名無しさん
2013/05/21(火) 03:48:15.51>自身の発言への解釈・補足行為自体にケチ付けるとか意味わからん
お前のオナニー用語で他人とのコミュニ
ケーションを試みないでください
あとSTLを連呼すると初心者が真似して
iostreamとかstringとかcomplexとか
元々のSTLの範囲を逸脱した誤用が
散乱するので不愉快です
0313デフォルトの名無しさん
2013/05/21(火) 03:50:57.30プログラム読んでたら気のせいかバキュームカーの匂いがしてきた
0314デフォルトの名無しさん
2013/05/21(火) 03:55:42.92「->*」が意味深だな
0315デフォルトの名無しさん
2013/05/21(火) 04:15:47.560316デフォルトの名無しさん
2013/05/21(火) 04:16:52.110317デフォルトの名無しさん
2013/05/21(火) 06:23:04.60どの用語か具体的に書けよ…と思ったが別にいいや
原理主義者にとっては世の中オナニー用語塗れだったりしそうだしキリがねぇ
後半は分かるけど、なら最初からそれだけ言ってりゃいいんじゃねぇの?
変な煽りを入れるから斜め上の斜め下の斜め右みたいなアホなことになる。
0318デフォルトの名無しさん
2013/05/21(火) 07:30:13.22マジレスすると
ウ○コが出るんじゃなくて
ウ○コのデリケートと思われ
0319デフォルトの名無しさん
2013/05/21(火) 07:30:50.060320デフォルトの名無しさん
2013/05/21(火) 07:43:52.330321デフォルトの名無しさん
2013/05/22(水) 11:48:06.850322デフォルトの名無しさん
2013/05/22(水) 12:08:27.57ID:kEnSD/aE!This assignment uses functions to process arrays.
In main, define an array called original with 20 integer values.
Define two additional arrays of size 20 called positive and negative.
Fill the original array by prompting the user to enter values until they either fill all 20 elements or enter an 999.
Write a void function called split() that reads the array and puts all positive values (including zero) into an array called positive, and puts all negative values into an array called negative.
split() will have three integer array parameters.
Write a integer function called sortArr() which sorts the two arrays into ascending order.
sortArr() will have one integer array parameter, and will return the count of the array.
Write a void function called display() that will print the array out to the screen.
display() will have one integer array parameter.
In main, display a message telling the count value for each array in a meaningful message.
だれか頼む
0323デフォルトの名無しさん
2013/05/22(水) 12:50:21.450324片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/22(水) 15:34:58.20mainにおいて、20個の整数値を持つoriginalと呼ばれる配列を定義せよ。
positiveとnegativeと呼ばれる、サイズが20の追加的な2つの配列を定義せよ。
ユーザにすべての20要素か、999を入力するまで、original配列を埋めよ。
split()と呼ばれるvoidの関数(その配列を読み、全ての正の値(ゼロを含む)を、
positiveという配列に置き、すべての負の値をnegativeという配列に置く)を書け。
split()は、三つの整数配列の引数を持つものとする。
sortArrと呼ばれる整数関数(二つの配列を昇順に並べる)を書け。
sortArr()は、一つの整数配列を持ち、配列の和を返すものとする。
display()と呼ばれるvoid関数(スクリーンにその配列を出力する)を書け。
display()は、一つの配列引数をもつものとする。
mainでは、メッセージ(それぞれの配列について数えた値を、
意味のあるメッセージで伝える)を表示せよ。
0325デフォルトの名無しさん
2013/05/22(水) 15:40:10.46読んだ上でどうしたらいいかが質問の内容で・・・
0326デフォルトの名無しさん
2013/05/22(水) 16:10:27.55C/C++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1364700745/
0327167
2013/05/22(水) 19:16:49.57開発者全員にvirtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう
それともそういうプロジェクトでは規約というものが有名無実化してるのか?
0328デフォルトの名無しさん
2013/05/22(水) 19:35:45.23ソースコミットメントに、条件でvirtualがあったら不許可にすればOK
0329デフォルトの名無しさん
2013/05/22(水) 19:39:10.530330デフォルトの名無しさん
2013/05/22(水) 19:53:46.600331デフォルトの名無しさん
2013/05/22(水) 19:57:52.470332デフォルトの名無しさん
2013/05/22(水) 19:58:14.120333デフォルトの名無しさん
2013/05/22(水) 19:59:23.450334デフォルトの名無しさん
2013/05/22(水) 20:04:08.20iostream(cin,cout,cerr)の使用禁止
0335デフォルトの名無しさん
2013/05/22(水) 20:18:43.64>virtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう
マジレスすると質問内容が無毛。
不使用の目的が不明なので
答えようがない。
「そういうプロジェクト」も
どういうプロジェクトなのか不明。
0336167
2013/05/22(水) 20:20:10.24徹底させるノウハウのあるところなら、
virtualの不使用を徹底させるくらい
造作もないことではなかろうか
0337デフォルトの名無しさん
2013/05/22(水) 20:20:42.660339デフォルトの名無しさん
2013/05/22(水) 20:27:46.20マジレスすると>>327の内容と>>336の内容
との論理的関係が無毛
0340デフォルトの名無しさん
2013/05/22(水) 20:32:11.840341デフォルトの名無しさん
2013/05/22(水) 20:35:25.26お巡りさんこいつです
0342デフォルトの名無しさん
2013/05/22(水) 20:35:25.640343デフォルトの名無しさん
2013/05/22(水) 20:39:30.52「実行時に呼ばれる関数が変わって
デバッグに苦労したので仮想関数と
C++は糞」
と暴れた奴が以前いたような
0344デフォルトの名無しさん
2013/05/22(水) 20:43:42.05C++11のoverrideも糞いし
0345デフォルトの名無しさん
2013/05/22(水) 20:47:02.15C#のoverrideが糞でなくて
C++のoverrideが糞な具体例を
教えてください
0346デフォルトの名無しさん
2013/05/22(水) 20:49:15.64発狂したわ。JAVAはC++よりクソ
0347デフォルトの名無しさん
2013/05/22(水) 20:59:26.52C++の派生クラスでのvirtualは必須ではないから
派生クラスにvirutalを書かなくても仮想関数になる
virtualを書いてなくても仮想関数かどうか気にしないといけないという糞仕様
C++11でもvirtualもoverrideも書かなくてもやはり仮想関数になる
あくまでoverrideが付いてるなら仮想関数でなければならないだけで、
仮想関数にoverrideを付けなくてはならないわけではない
強制されないoverrideとか糞にも程がある
0348デフォルトの名無しさん
2013/05/22(水) 21:19:25.11プライベートメソッドはどうしてるんだろう
知らぬ間にオーバーライドしたら困るよ
0349デフォルトの名無しさん
2013/05/22(水) 21:23:37.74事故が一切起こらない
後発言語なだけに研究されている
0350デフォルトの名無しさん
2013/05/22(水) 21:34:47.630351デフォルトの名無しさん
2013/05/22(水) 21:37:20.13あれもくだらない理由で発生するだろ
0352デフォルトの名無しさん
2013/05/22(水) 21:44:27.960353デフォルトの名無しさん
2013/05/22(水) 23:12:46.46C#のそれは、C++のvirtual並に面倒なことよ
0354デフォルトの名無しさん
2013/05/23(木) 04:39:01.94キャスト演算子がオーバーロードされてれば楽なのにって思うんだけど・・・・・・
0355デフォルトの名無しさん
2013/05/23(木) 05:54:28.560356デフォルトの名無しさん
2013/05/23(木) 06:24:37.380357デフォルトの名無しさん
2013/05/23(木) 07:16:35.91キャストに頼ってちゃprintfに使えないからじゃない?
まあCStirngみたいにトリッキーな実装すればできるけど
0358デフォルトの名無しさん
2013/05/23(木) 09:36:30.45explicit はc++でも普通に使うけどな
0359デフォルトの名無しさん
2013/05/23(木) 11:17:38.410360デフォルトの名無しさん
2013/05/23(木) 19:33:04.330361デフォルトの名無しさん
2013/05/23(木) 19:41:05.80〜
for( auto& Val : vVal )
{
・・・
}
上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??
0362デフォルトの名無しさん
2013/05/23(木) 19:47:32.72コピペ荒らしスクリプトか?
0363デフォルトの名無しさん
2013/05/23(木) 19:50:01.35アダプタ書けば良い
0364KUSO KOTE
2013/05/23(木) 19:52:25.49>>109の「begin-expr」はクラス型の場合
__range.begin()
と決まっているから、
begin()が逆のイテレーターを返す細工が必要。
つまりそのままではできない。
0365デフォルトの名無しさん
2013/05/23(木) 19:54:38.79今、次のようなコードがあるとします。
wchar_t * src = L"aabbcc";
wchar_t dest[3];
size_t lenToCpy = 2;
wcsncpy_s(dest, 3 * sizeof(wchar_t), src, lenToCpy);
dest[6] = L'\0';
"aa"だけコピーしたいんですけど。
使い方はこれであってますか?
なんか、wcsncpy_sでsrcの長さ(この場合6文字xsizeof(wchar_t) = 12バイト)だけdestが0xfeで埋められてから
len文字分だけコピーされているように見えます。@VS2008
なのでdestでヒープが壊れるってデバッグ終了時に言われるんですが。。
(この例ではdestはローカルだけど、実際にやってるコードだとヒープです。)
0366デフォルトの名無しさん
2013/05/23(木) 20:05:51.990367デフォルトの名無しさん
2013/05/23(木) 20:16:59.04お前が出ていけ
0368KUSO KOTE
2013/05/23(木) 20:25:02.08>使い方はこれであってますか?
少なくとも「3 * sizeof(wchar_t)」は
APIの説明にあるnumberOfElements
ではないぞよ。
0369デフォルトの名無しさん
2013/05/23(木) 20:28:27.05はできるだけ書かずにstd::cout, std::endlのように書いていったほうが良いと考えておkですか?
スタティックなインポート?に恐怖を感じます
0370KUSO KOTE
2013/05/23(木) 20:33:18.05dest[6] = L'\0';
なんだこのUNKOコードは…
0371デフォルトの名無しさん
2013/05/23(木) 20:36:22.81少なくともヘッダには書くなよ?
スコープに気をつければ関数内で使うのはアリかと
0372デフォルトの名無しさん
2013/05/23(木) 20:37:20.32おまえが言うな
0373デフォルトの名無しさん
2013/05/23(木) 20:38:24.60ヘッダって何ですか?
0374デフォルトの名無しさん
2013/05/23(木) 20:38:56.15class Test {
public: Test getThis() { return this; }
};
のように自身を帰したい場合C++ではどのようにかくのですか?
0375デフォルトの名無しさん
2013/05/23(木) 20:40:01.02Test &getThis() { return *this; }
0376デフォルトの名無しさん
2013/05/23(木) 20:40:54.49むぎのように*thisを返すんじゃゲンよ
0377デフォルトの名無しさん
2013/05/23(木) 20:43:22.290378デフォルトの名無しさん
2013/05/23(木) 20:43:33.28仮想関数を呼び出したいんだけどどうすればいいでしょうか?
class SuperC{
virtual bool func()=0;
};
class SubC{
virtual bool func(){ 何らかの処理 }
};
int main(){
SuperC* super=new SubC();
return 1;
}
インスタンス化する予定はないのにSuperCのポインタは宣言できませんって言われる
0379デフォルトの名無しさん
2013/05/23(木) 20:50:39.34http://toro.2ch.net/test/read.cgi/tech/1345823164/
また過去ログコピペ荒らしかよ
答えが欲しいなら転載元のスレ見れば書いてあると思うぞ
0380デフォルトの名無しさん
2013/05/23(木) 20:52:45.05SuperCは純粋仮想関数を持ってるから抽象クラス
だからこれを継承してそれをポインタとして使わないとエラーになるよ
0381デフォルトの名無しさん
2013/05/23(木) 20:52:55.53public:ですよ
0382デフォルトの名無しさん
2013/05/23(木) 20:53:32.55ありがとうございます
0383KUSO KOTE
2013/05/23(木) 20:54:56.44> >ヘッダには書くなよ
>ヘッダって何ですか?
恐らく「いわゆるヘッダーファイル」のこと。
C++のheaderとは関係ない。
0384デフォルトの名無しさん
2013/05/23(木) 20:57:21.89メンバ関数ってなんでわざわざ
struct Obj {
void Method(void);
};
Obj obj;
obj.Method();
っていうふうにドットつけて書くんですかね?
struct Obj {
void Method(Obj & obj);
};
Obj obj;
Method(obj);
みたいな仕様ではダメな理由でもあったんでしょうか?
0385デフォルトの名無しさん
2013/05/23(木) 20:58:47.44オブジェクト指向言語の記法のはやりだったから
0386デフォルトの名無しさん
2013/05/23(木) 21:03:07.31あせるな
http://codepad.org/gmOwFe54
0387デフォルトの名無しさん
2013/05/23(木) 21:05:26.480388デフォルトの名無しさん
2013/05/23(木) 21:07:40.05引数が複数ある場合を考えてみろ
0389KUSO KOTE
2013/05/23(木) 21:11:42.25おぬしこそ焦るでない
http://ideone.com/AZarFm
0390デフォルトの名無しさん
2013/05/23(木) 21:11:48.140391デフォルトの名無しさん
2013/05/23(木) 21:17:53.22switch(id) {
case HOGE0: return shared_ptr<IHoge>(new Hoge0);
case 〜
}
}
上のようにポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい
アロケーターを使う他になにかいい手はないですか?
標準で可変長のスタック領域を扱えたりすると便利なんですが…
0392デフォルトの名無しさん
2013/05/23(木) 21:20:14.97>ポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい
むりです
0393デフォルトの名無しさん
2013/05/23(木) 21:24:09.35OpenGLだけど
const char* pVer = glGetString(GL_VERSION);
printf("version is %s¥n",pVer);
これだとOKで
printf("version is %s¥n",glGetString(GL_VERSION));
これだとダメだったんだが、もしかして返り値の寿命が関係してるの?
だとすると寿命はどう捉えるべき?
0394デフォルトの名無しさん
2013/05/23(木) 21:28:05.33>返り値の寿命が関係してるの?
いいえ
>だとすると寿命はどう捉えるべき
リファレンスに static
とかいてありませんか?
0395デフォルトの名無しさん
2013/05/23(木) 21:28:09.620396デフォルトの名無しさん
2013/05/23(木) 21:36:37.72何て糞なシグネチャーなんだ
設計した奴はJavaに転職するか死んだ方がいい
0397デフォルトの名無しさん
2013/05/23(木) 21:40:33.730398デフォルトの名無しさん
2013/05/23(木) 23:41:32.61現状では、begin()で先頭イテレータを取得し、取りたいインデックス回だけ++しています。
もっと一発で取れるようなエレガントな書き方はないでしょうか?
0399デフォルトの名無しさん
2013/05/23(木) 23:43:45.470401デフォルトの名無しさん
2013/05/24(金) 01:33:18.27C++の前にCの勉強だな。
0402デフォルトの名無しさん
2013/05/24(金) 03:07:42.11hoge-util.c
というファイルがどんどん巨大化していくのだけど
どんな名前つけてファイル分割すればいいですか?
hoge-util-base.c
hoge-util.c
とか?
0403デフォルトの名無しさん
2013/05/24(金) 03:33:14.15pure virtual destructor か、thx
0405デフォルトの名無しさん
2013/05/24(金) 05:53:58.34super_unko d-tor
スーパーうんこ、出たーブリブリ
0406デフォルトの名無しさん
2013/05/24(金) 06:09:48.00原則1クラス1ファイルが良いと思います。
クラス名をファイル名にするのが良いかと(^^)
あとutilityという名前のものは、
適切な概念または機能分類に
設計を見直した方がよいと思います。
0407デフォルトの名無しさん
2013/05/24(金) 07:47:53.10だとしたらCの前に会話のお勉強だなって返すだけじゃね?
モヒカン族をモヒカンするみたいであれだけど、バカの一つ覚えにはこれで良い
0408デフォルトの名無しさん
2013/05/24(金) 10:35:08.68「-1」と入力すると”数が正しくありません〜”とでて次の”数を入力してください->”に戻るけど
「a」と入力すると”数が正しく〜”と”数を入力〜”がずっとでつづけます
なぜなんでしょうか?
while(1) {
cout << "数を入力してください->";
cin >> num;
state =cin.rdstate();
if (num <= 0 || state != std::ios_base::goodbit){
cout << "数が正しくありません。最初に戻ります。\n" << endl;
continue;
}
…
}
0409デフォルトの名無しさん
2013/05/24(金) 10:41:22.44ストリームにはエラーフラグというものがあってな、一度入力(出力)エラーになると
clear() するまでその後の操作は全部即エラーになるんだよ。
0410デフォルトの名無しさん
2013/05/24(金) 11:24:59.540411デフォルトの名無しさん
2013/05/24(金) 12:13:40.05エラーを clear() してから a を読み捨てないと、
永遠に先まで読み進められない
0412デフォルトの名無しさん
2013/05/24(金) 12:17:46.960413デフォルトの名無しさん
2013/05/24(金) 12:58:09.20AA荒らしだと荒らし報告されるので、一見質問を装って過去の質問をコピペする
荒らしに切り替えたと思われる
削除人も指摘してるけど、荒らしにレス付けちゃうと、削除依頼を出してもそこは
削除されない
まず過去ログを検索して、そのURLを貼って行くと削除依頼しやすい
0414デフォルトの名無しさん
2013/05/24(金) 14:36:35.44http://toro.2ch.net/test/read.cgi/tech/1368740939/831
0415デフォルトの名無しさん
2013/05/24(金) 15:55:23.40そうやって雰囲気を保ちつつ真の質問者がめざめるその日を待つべし
0416デフォルトの名無しさん
2013/05/24(金) 15:59:20.73大人ですね感心しました
0417デフォルトの名無しさん
2013/05/24(金) 16:05:12.00CBaseAを継承し、CSpecとします。
CSpec CSpec::operator=(const CSpec &obj ){
CBaseA *p1 = dynamic_cast <CBaseA *> ( this );
CBaseA *p2 = dynamic_cast <const CBaseA *> ( &obj );
if( (p1 != nullptr) && (p2 != nullptr) ) *p1 = *p2;
}
今はこのようにしています。
0418デフォルトの名無しさん
2013/05/24(金) 16:08:08.820419デフォルトの名無しさん
2013/05/24(金) 16:57:24.580420デフォルトの名無しさん
2013/05/24(金) 17:28:20.42キャスト使うならこうだろ
static_cast<CBaseA &>(*this) = obj;
0421デフォルトの名無しさん
2013/05/25(土) 09:42:24.31|/  ̄ /\ \/
| 〉
} ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄` 、 ∨
i::::::::::::{ / __≧x │ | >x {
. /⌒V ≪ ̄ f}j\ミト} ノ j xf斗≦^}7
. { i⌒ヽ ` __/ ィf´ fj ̄\ /
| |/^{  ̄ | \__,ノ/⌒!
∨ ({ } n_ノ  ̄ /⌒リ
\\ ` ̄} ̄l ̄l ̄l ̄`ヽ ハ} j/
ー| ∨ ̄ ̄ ̄ ̄ ` く У ///
. |∧ V⌒ヽ._______j/ /ー'
. | iヽ ∨| { / ′
. | | ‘, Vー‐ーー-∧/ /
. | | , \____ / ィ
__| | ‘,  ̄//
_| ̄ ̄\ ー‐---く /\
___/ / | \ / / __{__)、_
/ / ` | / ̄ ̄ / | }
. / / \_| / __| |\__
/┌┴─  ̄ ̄ ̄ ̄\ ̄ ̄ } \ \
. | (___) \__ \
0422デフォルトの名無しさん
2013/05/25(土) 16:51:38.56処理内でなにもしなくても書くべきなの?
何もしない場合、出来れば書きたくないんだけど
0423デフォルトの名無しさん
2013/05/25(土) 16:55:36.07そう思うんなら書かなきゃいいだろ。
「書くべき」という理由が何かあってその妥当性がわからないということなら、
その理由を挙げて相談してくれ。
0424デフォルトの名無しさん
2013/05/25(土) 16:56:13.82書かなくてもコンパイル時に自動で空のコンストラクタ&デストラクタが生成されて、
実行時にもそれらが自動で呼ばれると聞いたことがある。
趣味グラマの俺は必要ないときには書かない方針にしているが今まで問題が発生したことはない。
0425422
2013/05/25(土) 17:14:28.61自動で書かれるのは知ってる
仕事で書く場合、書いた方が良いのか聞きたい
0426デフォルトの名無しさん
2013/05/25(土) 17:25:20.08「あれ? このクラスはコンストラクタ持ってるの? 持ってないの?」
という無駄を省ける
つまりインデックスがあれば全検索の無駄を省けるのだ(キリッ
0427デフォルトの名無しさん
2013/05/25(土) 17:26:00.520428デフォルトの名無しさん
2013/05/25(土) 17:30:08.06ソースコードがインデックスってのがウンコだな。
0429デフォルトの名無しさん
2013/05/25(土) 18:09:08.54|/  ̄ /\ \/
| 〉
} ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄` 、 ∨
i::::::::::::{ / __≧x │ | >x {
. /⌒V ≪ ̄ f}j\ミト} ノ j xf斗≦^}7
. { i⌒ヽ ` __/ ィf´ fj ̄\ /
| |/^{  ̄ | \__,ノ/⌒!
∨ ({ } n_ノ  ̄ /⌒リ >>428は馬鹿
\\ ` ̄} ̄l ̄l ̄l ̄`ヽ ハ} j/
ー| ∨ ̄ ̄ ̄ ̄ ` く У ///
. |∧ V⌒ヽ._______j/ /ー'
. | iヽ ∨| { / ′
. | | ‘, Vー‐ーー-∧/ /
. | | , \____ / ィ
__| | ‘,  ̄//
_| ̄ ̄\ ー‐---く /\
___/ / | \ / / __{__)、_
/ / ` | / ̄ ̄ / | }
. / / \_| / __| |\__
/┌┴─  ̄ ̄ ̄ ̄\ ̄ ̄ } \ \
. | (___) \__ \
0430デフォルトの名無しさん
2013/05/25(土) 18:22:04.690431デフォルトの名無しさん
2013/05/25(土) 18:26:42.23アニヲタはカエレ
0432デフォルトの名無しさん
2013/05/25(土) 18:43:28.260433デフォルトの名無しさん
2013/05/25(土) 18:46:47.89ヘッダ1つ検索で引っかからなければデフォコンだけってことだから
別に全検索なんて
0434デフォルトの名無しさん
2013/05/25(土) 19:35:42.69こういう関係ないところでいきなりアニメネタ出すからアニヲタはキモがられるんだろ
普通の大人はそういう子供の観るものに慣れてないんだからやめろよ
0435デフォルトの名無しさん
2013/05/25(土) 19:48:49.84井口は中年受け悪いんじゃ値?
0436デフォルトの名無しさん
2013/05/25(土) 19:53:02.10なにかする必要があったけど書き忘れたというのではなく
最初からなにもしないということをソースコードレベルで明らかにしたいなら書いとけ
0437デフォルトの名無しさん
2013/05/25(土) 20:25:59.860438デフォルトの名無しさん
2013/05/25(土) 20:42:22.87デストラクタにvirtual付ける付けないってのはそれとは別でやっとくべきだが
0439デフォルトの名無しさん
2013/05/25(土) 20:49:29.600440デフォルトの名無しさん
2013/05/25(土) 21:57:36.02ソースは省略、仕様書に暗黙の定義を書かない:ゆとり
ソースは省略、仕様書は暗黙の定義を書く:アスペ
ソースに書く、仕様書書かない:普通の低脳
ソースは省略(暗黙)、仕様書何ソレ:困ったプログラマー
0441デフォルトの名無しさん
2013/05/25(土) 21:59:37.25つまりお前は
世の中の人間は普通かそれより劣る人間しか居ない
と考えてる
0442デフォルトの名無しさん
2013/05/25(土) 22:04:18.690443デフォルトの名無しさん
2013/05/25(土) 22:43:03.52全てのパターンを網羅して
その中で最も評価が高いのは「普通」になってるよな?
0444デフォルトの名無しさん
2013/05/25(土) 22:47:11.660445デフォルトの名無しさん
2013/05/25(土) 23:01:50.62意味が分からない
0446デフォルトの名無しさん
2013/05/25(土) 23:03:05.18つまり世界はみんな俺より低能だと言いたいんだろ?ww
分かる分かる
お前も大変だよな
0447デフォルトの名無しさん
2013/05/25(土) 23:24:14.310448デフォルトの名無しさん
2013/05/25(土) 23:30:24.32・モヒカンアスペ
規格を愛し「stlって何ですか?」「そのヘッダとやらはC++のheaderと何の関係が?」というどうでもよい突っ込みを入れる上級者。
ISO/IEC 14882が好きでたまらない
・嵐
意味のないAAや過去の質問を貼り付ける初級者。
過去スレを保存していることから、C++が好きでたまらない
・糞コテ
匿名の2chで自己主張が激しく、BASICが最高と信じるなど宗教色が強い中級者。
ISO/IEC 14882が好きでたまらない
・江○添取り巻き
ある個人のブログのネタを投下することに喜びを覚える中級者。
ISO/IEC 14882が好きでたまらない
・通りすがりのゆとり
質問をするが「自分で調べる」「自分の環境で試してみる」「問題を再現する最低限のコードを示す」という考えに乏しい初級者。
C++がカッコ良いと考え、C++が好きでたまらない
・マッチポンパー
規格上どうなのかを知るために、通りすがりのゆとりのふりをしつつ質問を投下するキチンな中級者。
ISO/IEC 14882が好きでたまらない(読んだことはない)
・クレーマー
長年の経験に基づき他人に重箱の角をつつく指摘をすることに快感を覚える上級者。
主にC++よりも日本語の指摘に執着する。
ISO/IEC 14882が好きでたまらない。
みんなC++が好きでたまらない
0449デフォルトの名無しさん
2013/05/25(土) 23:33:48.79なにこれ。コピペ?
0450デフォルトの名無しさん
2013/05/25(土) 23:36:35.03アニヲタのコピペだろう
忍法のレベル高けーな(ダメ人間)
0451デフォルトの名無しさん
2013/05/25(土) 23:55:00.750452デフォルトの名無しさん
2013/05/25(土) 23:59:25.25最後の一文は涙したぞ
0453デフォルトの名無しさん
2013/05/26(日) 00:05:54.88匿名の2chで自己主張が激しく、
ideoneを開いてこのスレをF5連打する。
ISO/IEC 14882:2011が好きでたまらない。
最初と最後が同じだろ。
0454デフォルトの名無しさん
2013/05/26(日) 00:10:12.19あんなの書くぐらいならリソースエディタとC++でWinAPI叩いてるほうがよっぽどええわ。
0455デフォルトの名無しさん
2013/05/26(日) 00:12:04.10GUIツールをVisual C++で作るのは
他人の迷惑です
C#にしといてください
0456デフォルトの名無しさん
2013/05/26(日) 00:13:06.77はC#に逃げたチキン
0457デフォルトの名無しさん
2013/05/26(日) 00:17:48.71今でこそ.NETのフレームワークは大半のユーザPCに入ってるけど、そういうの要求されるのも迷惑だからVC安定だろ
MSVCRTとかは最悪添付すりゃいいし、何が迷惑なのかさっぱり分からん
C#というか.NETは文化がちょっと違うから、受け入れられない奴が居るのは仕方ない
0458デフォルトの名無しさん
2013/05/26(日) 00:20:38.99微塵も無いと思うけどな
Windows限定なら、携帯でメール使わずに
直筆のハガキで文通するレベル
0459デフォルトの名無しさん
2013/05/26(日) 00:31:56.980460デフォルトの名無しさん
2013/05/26(日) 00:35:01.30使い捨てのツールなら処理速度は重要でないし
メモリ破壊や不正メモリアクセスのない言語は
メリットあると思うけど。
C++スレで他言語の悪口を遠吠えするのは構わないけど
どの辺がC++と比べて悪いかぐらい書けよカス。
0461デフォルトの名無しさん
2013/05/26(日) 00:47:22.67C#のフロントエンドって組み合わせで作ってるな
0462デフォルトの名無しさん
2013/05/26(日) 01:22:10.90.NET入ってなくても動くのは利点だろ。
初回起動時のアセンブリ生成動作が不要なのも一応利点だし、
生成されたキャッシュが残る気持ち悪さが存在しないのも利点。
あと、逆汗の品質がC++の方が低いからイジられにくさが誤差レベルで上昇する。
実行速度は普通に書く範囲では最適化かかるから大差ないだろうし
640の言う利点もC++には無いから、双方それなりのメリットとデメリットが有る。
ユーザ側の迷惑で見るなら….NETのランタイム要求は回避不能な迷惑。
バグによるトラブルはC++でも実装次第だし、実装次第では.NETでも迷惑。
>>460
文化が肌に合わないって言ってるだけにしか見えないし、聞き流せば良いだろ。
むしろ、どの辺がC#と比べて悪いかも書かない455や458にも突っ込め。
0463デフォルトの名無しさん
2013/05/26(日) 01:37:05.630464デフォルトの名無しさん
2013/05/26(日) 02:14:12.80たしかcppの新規格だと空のデフォコン書かないのは危険と聞いた
詳しくはしらないが
0465デフォルトの名無しさん
2013/05/26(日) 04:47:34.35>新規格だと空のデフォコン書かないのは危険と聞いた
いえ、そんなことないです
0466デフォルトの名無しさん
2013/05/26(日) 08:53:45.62C++ でもランタイムは必要だぞ
0467デフォルトの名無しさん
2013/05/26(日) 09:04:35.47実行時?
0468デフォルトの名無しさん
2013/05/26(日) 09:14:55.68実行時ライブラリを低脳が略した言葉。
だったはずだけど.NETの場合その意味を逸脱してるね。
だからもうDLL=ランタイム()でいい。
中身よりファイル形式。君の周りにもXMLガーとか
CSVガーとかよくいるだろ。OSもランタイム
0469デフォルトの名無しさん
2013/05/26(日) 09:27:04.48別途ダウンロードする必要があるし
インスコの手間とがかかるだろ
0470デフォルトの名無しさん
2013/05/26(日) 09:33:48.05・モヒカンアスペ
長年の経験に基づき他人に重箱の角をつつく指摘をすることに快感を覚える上級者。
主にC++よりも日本語の指摘に執着する。
ISO/IEC 14882が好きでたまらない
・嵐(あらし)
意味のないAAや過去の質問を貼り付ける初級者。
過去スレを保存していることから、C++が好きでたまらない
・糞コテ
匿名の2chで自己主張が激しく、
ideoneを開いてこのスレをF5連打する。
ISO/IEC 14882とKUSOが好きでたまらない。
・江○添取り巻き
ある個人のブログのネタを投下することに喜びを覚える中級者。
ISO/IEC 14882が好きでたまらない
・通りすがりのゆとり
質問をするが「自分で調べる」「自分の環境で試してみる」「問題を再現する最低限のコードを示す」という考えに乏しい初級者。
C++がカッコ良いと考え、C++が好きでたまらない
みんなC++が好きでたまらない
0471デフォルトの名無しさん
2013/05/26(日) 10:35:27.030472デフォルトの名無しさん
2013/05/26(日) 11:26:13.290473デフォルトの名無しさん
2013/05/26(日) 11:27:07.800475デフォルトの名無しさん
2013/05/26(日) 11:28:26.440476デフォルトの名無しさん
2013/05/26(日) 11:30:12.120477デフォルトの名無しさん
2013/05/26(日) 11:34:16.46コンピューターとプログラミング言語が
存在する」
ということを忘れて
メモリ操作と天ぷらオナニーばかりしているから
どうしようもない
0478デフォルトの名無しさん
2013/05/26(日) 12:26:54.930479デフォルトの名無しさん
2013/05/26(日) 12:37:08.08ランタイム(実行時)の2つを文脈次第で読み替えるケースがある。
個人的にはライブラリは明確に「ランタイムライブラリ」と言うように
している。単にライブラリと言うことのほうが多い。
コンパイルタイムとランタイムの意味の違いは多くの人がわかって
いるようでわかっていないので一度は考えてみるべきこと。
0480デフォルトの名無しさん
2013/05/26(日) 13:11:52.750481デフォルトの名無しさん
2013/05/26(日) 14:29:09.39stroustrupからのお願い
もしこれをご覧の皆様が私に
1本ずつhairを植毛していただけるなら…
http://www.stroustrup.com/
0482デフォルトの名無しさん
2013/05/26(日) 16:41:31.57意味わからん
C++よりもC(もしくはその範囲内)で書く方がはるかにメモリを意識せねばならない
C++専門プログラマなど、メモリ管理に関しては大概RAII手段に丸投げの素人
0483デフォルトの名無しさん
2013/05/26(日) 18:46:34.080484422
2013/05/26(日) 18:47:24.770485デフォルトの名無しさん
2013/05/26(日) 19:18:30.87C++はゆとり化しすぎでキチでゆとり・へたれな奴用になった
0486デフォルトの名無しさん
2013/05/26(日) 19:49:40.45他の言語が得意とする領域をCの古いやり方で
言語拡張して誰特な感じではあるけど、
ヘタレでもゆとりでもない。
>>484
書くことで不要な争いを避けることができるから
暇なら書いておくのが吉。
0487デフォルトの名無しさん
2013/05/26(日) 19:52:43.65メンバ変数ある場合でも何もしないの?
0488デフォルトの名無しさん
2013/05/26(日) 19:55:31.41親クラスと自分のメンバーについて
デフォルトコンストラクターを持つものを初期化します
他(intなど)は何もしません
0489デフォルトの名無しさん
2013/05/26(日) 20:02:49.25嘘をついてはいけない
intなどのPOD型も0初期化される場合とされない場合がある
A a; ← 0初期化されない
A(); ← 0初期化される
A* p;
p = new A; ← 0初期化されない
p = new A(); ← 0初期化される
0490デフォルトの名無しさん
2013/05/26(日) 20:04:31.19>デフォルトコンストラクターを持つもの
の明示的な初期化を記述してかつ
>他(intなど)は何もしません
を明示するためにコンストラクタは書いてちょーだい
0491デフォルトの名無しさん
2013/05/26(日) 20:09:07.530492デフォルトの名無しさん
2013/05/26(日) 20:09:56.750493デフォルトの名無しさん
2013/05/26(日) 20:10:31.95int i;
A(){};
};
空コンストラクタのせいでPODじゃなくなるだろ
無条件に書くとか余計なことするな
0494デフォルトの名無しさん
2013/05/26(日) 20:12:07.54何言ってんの?
テンポラリオブジェクトの作成だぞ
0495デフォルトの名無しさん
2013/05/26(日) 20:13:21.920496デフォルトの名無しさん
2013/05/26(日) 20:14:23.70知識を自慢したいだけの自己顕示欲馬鹿が参入
0497デフォルトの名無しさん
2013/05/26(日) 20:15:24.27罰ゲームなんですか?
0498デフォルトの名無しさん
2013/05/26(日) 20:15:41.38自分で定義したデフォルトコンストラクタを持つのはPOD型ではない
0499デフォルトの名無しさん
2013/05/26(日) 20:17:18.120500デフォルトの名無しさん
2013/05/26(日) 20:21:30.11↑荒らしにかまってスレを荒らす馬鹿登場
0502デフォルトの名無しさん
2013/05/26(日) 21:13:41.32何が何でもキレイで明確にしたい派
struct A{
int i, j;
A() : i(), j() {}
};
ゼロ初期化しなくても良いけどコンストラクターだけ明確にしたい派
struct A{
int i, j;//不定
A() {}
};
POD最高! ()でゼロに初期化する自由があるぜ派
struct A{
int i, j;
};
A a1; new(&a1) A();
A a2=A();
A a3;//不定
0503デフォルトの名無しさん
2013/05/26(日) 21:15:46.600504デフォルトの名無しさん
2013/05/26(日) 21:18:10.73はこの場合はデストラクタが空だからいいけど、
意味のあるデストラクタが存在したら危険だかんね
0505デフォルトの名無しさん
2013/05/26(日) 21:19:17.810506デフォルトの名無しさん
2013/05/26(日) 21:21:35.652回もコンストラクトしてる時点でネタだろ
POD限定でも引くわ
0507デフォルトの名無しさん
2013/05/26(日) 21:26:08.61最初のはコンストラクトされているとは言えないな
0508デフォルトの名無しさん
2013/05/26(日) 21:40:12.910509デフォルトの名無しさん
2013/05/26(日) 21:46:07.43default-initialize(8.5p7)が完了して
オブジェクトが生成されてるというのに?
0510デフォルトの名無しさん
2013/05/26(日) 21:59:50.94C++でゆとりなのは、こんなコードCでいーじゃんってのしか書けない奴でしょ?
使いこなせばコードの見通しが非常に良くなる。メモリ管理もC++はCと大差ない。
0511デフォルトの名無しさん
2013/05/26(日) 21:59:52.64ただしVisual C++では使えない。
0512デフォルトの名無しさん
2013/05/26(日) 22:09:07.32初期化に1バイトのマシン語も生成されないという意味だ
0513デフォルトの名無しさん
2013/05/26(日) 22:18:15.43↓ 初期化でなく破棄の例ですが
途中の3行はマシン語生成されないので
気にならない人なんですね
struct A {double v;} a1;
a1.~A();
a1.~A();
a1.~A();
new(&a1) A();
0514デフォルトの名無しさん
2013/05/26(日) 22:23:55.96マシン語生成されないでので、
複数回デストラクトではありません。
0515デフォルトの名無しさん
2013/05/26(日) 23:33:52.230516デフォルトの名無しさん
2013/05/26(日) 23:39:17.76俺みたいのがプロジェクトに一人いるだけできっと酷い事故に繋がるんだろうな。
まあ、お前らは俺がいないことに感謝するんだな!感謝が足りないと参加しちゃうぞ!
0517デフォルトの名無しさん
2013/05/26(日) 23:52:55.21きもいコード書く奴がみんなの迷惑いだから
0518デフォルトの名無しさん
2013/05/26(日) 23:54:46.35>メモリ管理もC++はCと大差ない。
ちょっC流のメモリ管理とはスタック上やデータセクションに固定長のデータ領域をとって
溢れないように設計しとくというのがメインなのに対して、
C++流のはヒープ上に動的にとって、データサイズに合わせて伸縮させるとかのがメインなので
差がありまくりなのではありませんか
あと個人的には、C++のどこでも新たに自動変数を宣言できるというのは
当初は理にかなっており便利だと思ったが、
ソースとスタックフレーム内の配置との対応が失われがちで、
いざローレベルなデバッグを開始したときに、
スタックのダンプから変数を大変追い難くしており悪だと思えるようになった
0519デフォルトの名無しさん
2013/05/26(日) 23:59:38.21今後ストラウスとラップの吹く笛に訳もわからず踊らされる人間が増えすぎて
OSのカーネルがC++で書かれるようになったら漏れは隠居する
0520デフォルトの名無しさん
2013/05/27(月) 00:03:00.050521デフォルトの名無しさん
2013/05/27(月) 00:03:44.68抽象化はされてるけど大して変わらん
むしろCよりも内部がどう動いているのか把握する事が大事なように思う
VM言語(Java、C#等)はさすがにアレレ?と思う事が多いけど便利は便利
しかしこれでOSを書かれたらさすがに遠慮する
0522デフォルトの名無しさん
2013/05/27(月) 00:11:07.68かわいそうだろ
0523デフォルトの名無しさん
2013/05/27(月) 00:14:22.52書けるからって書かないからw
0524デフォルトの名無しさん
2013/05/27(月) 00:17:59.58でも、日本でプログラムやっている奴ってほとんど全てドカタなのに
エンジニア用言語のC/C++を使うってどうかしている。
ドカタはドカタ用言語使ったほうが良いのに
お前らはC/C++でどのOSの開発やっているの?
0525デフォルトの名無しさん
2013/05/27(月) 00:50:10.740526デフォルトの名無しさん
2013/05/27(月) 00:57:31.98ドカタって言うか主婦のオバチャンがアルバイトでプログラムしてるもんなーJavaは
0527デフォルトの名無しさん
2013/05/27(月) 01:11:48.42Javaは大衆車。
0528デフォルトの名無しさん
2013/05/27(月) 01:11:54.08なんかドカタしてますって感じ
0529デフォルトの名無しさん
2013/05/27(月) 01:50:00.38スタティックリンク版使えば再配布可能ライブラリには依存しなくできるし、
そもそも再配布可能ライブラリは同じフォルダにDLLぶち込んどけばインストールしなくてもだいたいなんとかなる
0530デフォルトの名無しさん
2013/05/27(月) 01:53:38.13>ソースとスタックフレーム内の配置との対応が失われがちで、
最適化掛かってりゃ一緒くたな気が…
0531デフォルトの名無しさん
2013/05/27(月) 06:15:03.30スタティックリンクされようがなんだろうが、ランタイムライブラリはランタイムライブラリじゃねえ?
ランタイムライブラリとは、ある言語をフルセットで使えるようにするために必須のライブラリで、
かつ、その言語自身では書くことが困難な低水準機能を実装してあるライブラリのことを指す、
いや個人的には疑問を感じないではないが、世間一般の慣習的に、、
少なくともスタティックリンクだからランタイムライブラリではない、という議論はあまり聞かない希ガス
0532デフォルトの名無しさん
2013/05/27(月) 06:24:26.99Yes
0533デフォルトの名無しさん
2013/05/27(月) 06:29:09.260534デフォルトの名無しさん
2013/05/27(月) 06:36:40.07スタティックリンクでもラインタイムはランタイムってのは当然の話だわな。
話の出発点な462はC#他.NETだとランタイム(と言うより.Net Framework)のインストールが必要だが
C++等はDLLを同梱するなりスタティックリンクしておくことでインストール不要に出来る(利点となる)って話だろ。
スタティックリンクだろうがランタイムはランタイムだが、それの導入をユーザに要求されるかどうかは結構重要。
今時.NETが古いの含めて1個も入ってない環境ってのは珍しいだろうし、
最新版要求しなけりゃ大体大丈夫ってな話では有るんだが。
0535デフォルトの名無しさん
2013/05/27(月) 09:49:43.66と
実行時ライブラリ(ライセンス)
0536デフォルトの名無しさん
2013/05/27(月) 12:31:03.62皆、キチガイってことで
0537デフォルトの名無しさん
2013/05/27(月) 12:36:29.510538デフォルトの名無しさん
2013/05/27(月) 13:49:51.580539デフォルトの名無しさん
2013/05/27(月) 15:57:13.81自覚あるの?
0540デフォルトの名無しさん
2013/05/27(月) 20:12:51.27いえ全然。>>534はお疲れですか ?
0541デフォルトの名無しさん
2013/05/27(月) 20:32:36.78C++知らないならレスしないでください
0542デフォルトの名無しさん
2013/05/27(月) 20:36:52.89「ランタイムライブラリとは、ある言語をフルセットで使えるようにするために必須のライブラリで、
かつ、その言語自身では書くことが困難な低水準機能を実装してあるライブラリのことを指す」
長文オナニー乙。妄想は独りでやれよ。
>>529
「再配布可能ライブラリは同じフォルダにDLLぶち込んどけば」
それはやめてくれとマイクロソフトが10年以上言い続けているのにお前と来たら…
0543デフォルトの名無しさん
2013/05/27(月) 20:44:07.14アメリカ人以外がネイティブ言語に強くなられると彼らの破産が早まるし
0544デフォルトの名無しさん
2013/05/27(月) 20:59:57.490545デフォルトの名無しさん
2013/05/27(月) 21:06:50.620546デフォルトの名無しさん
2013/05/27(月) 21:17:46.410547デフォルトの名無しさん
2013/05/27(月) 21:18:01.39それは聞いた事がある
2chを読む事によって日本の国内事情はアメリカに完全に把握されているとか何とか
まあ属国だしなあ
0548デフォルトの名無しさん
2013/05/27(月) 21:23:31.69C++をインタープリタにすり替えようとしてるんだろ?
0549デフォルトの名無しさん
2013/05/27(月) 21:27:36.78C++/CLI < .netと融合しようとした
C++/CX < けど、諦めた
0550デフォルトの名無しさん
2013/05/27(月) 21:46:20.56可能ならC++を使えるのはMSの社員だけにしたいんだろう
0551デフォルトの名無しさん
2013/05/27(月) 21:50:45.41もっと能動的に利用してるよ。忍法帖とかレベルとか言ってアクセス者を識別し
思想調査、あらゆる嗜好を調べて、自ら煽った極東の緊張で警察国家に出来た暁には
「危険思想の持ち主」は尽く処刑する腹だろ
0552デフォルトの名無しさん
2013/05/27(月) 22:22:33.00ゲーム機だから用意された機材で粛々と作るだけですよ。まぁドカタだね
今はもうアセンブラとか使わないし。そういうところもCモドキで書ける
0553デフォルトの名無しさん
2013/05/28(火) 01:12:09.44crt=C RunTime library
0554デフォルトの名無しさん
2013/05/28(火) 07:34:34.42Iibcmt.lib(静的リンク)がもともとあって
前者だけOSに取り込まれたから
Cライブラリ=ランタイムライブラリ
というややこしい図式ができた
0555デフォルトの名無しさん
2013/05/28(火) 19:17:24.680556デフォルトの名無しさん
2013/05/28(火) 19:56:45.64そういう経緯だったのか。
0557デフォルトの名無しさん
2013/05/28(火) 20:03:55.770558デフォルトの名無しさん
2013/05/28(火) 20:27:04.20Visual Basicランタイムライブラリをランタイムと
連呼し始めてから用語がデタラメな使われ方をする
ようになった。
アプリケーションプログラマーが直接
書いてない基本的モジュール全般をさす。
0559デフォルトの名無しさん
2013/05/28(火) 20:31:25.13オンラインリアルタイム処理という言葉はあるんだね。
オンラインというと、ネトゲみたいなのを思い浮かべちゃうw
0560デフォルトの名無しさん
2013/05/28(火) 20:46:50.75伝送路が膨大なヒューマンエラーに晒されることを意識するという点ではおかしいが
0561デフォルトの名無しさん
2013/05/28(火) 21:09:38.97オフラインにするイメージなのかな
0562デフォルトの名無しさん
2013/05/28(火) 22:24:07.80てか、オンライン処理(⇔バッチ処理)で完結した言葉だと思ってた。
オンライン処理って省略せず正確にいうとオンラインリアルタイム処理っていうのか
そっちの方にヘェーっと思ったわw
0563デフォルトの名無しさん
2013/05/29(水) 00:02:10.300564デフォルトの名無しさん
2013/05/29(水) 00:15:09.09しかもこれ無駄に単なる関数の再定義だったりでな
ほんとに・・・もう・・・無駄に血圧上がって寿命縮みそう(´・ω・`)
0565デフォルトの名無しさん
2013/05/29(水) 01:07:09.420566デフォルトの名無しさん
2013/05/29(水) 01:19:17.76糞カッコ悪いifdef undef endifを書いてwinbaseがうんこなので仕方なくundefしますって注釈も書きました
ああ^〜はげる^〜
0567デフォルトの名無しさん
2013/05/29(水) 02:06:43.13手動deleteできるnewとbohem_newを使い分けできないものなのでしょうか
0568デフォルトの名無しさん
2013/05/29(水) 02:30:23.49http://cansecwest.com/slides/2013/DEP-ASLR%20bypass%20without%20ROP-JIT.pdf
0569デフォルトの名無しさん
2013/05/29(水) 08:49:24.74どちらかに○を付けてください。
はぁ?って事はよくある
0570デフォルトの名無しさん
2013/05/30(木) 13:53:47.82貴様のレベルも禿も
ストラウストラップ先生に
まだまだ遠く及ばない
0571デフォルトの名無しさん
2013/05/31(金) 02:39:08.25まあバッチは一括処理である以上、貯めたデータを使ってオフラインで行うことが多いし
リアルタイム処理はオンライン上の対象と通信しながらやることが多いから解らんでもないけど
0572デフォルトの名無しさん
2013/05/31(金) 17:10:21.70ダム端末のオンライン的な「オンライン」とかオンラインマニュアルみたいな「オンライン」から来てるんじゃねぇかなあのへんで言うオンラインって
0573デフォルトの名無しさん
2013/05/31(金) 17:23:10.01やっぱオンライン処理が妥当な気がする。
0574デフォルトの名無しさん
2013/05/31(金) 18:57:23.23動画を撮影してる端からエンコーディングしてるのはリアルタイムエンコーディングって言ったほうがしっくりくるね。
逆に銀行のATMでの送金処理なんかはまさにオンライン処理、って感じだし。
他のコンピュータと連携しながら行う処理は、オンライン、オフラインがリアルタイム(?)、バッチ、とかなりの関連性を持ってるよね。
だけどもローカルだけで済む処理だけれど計算量が膨大になって時間と品質のトレードオフになるようなものはリアルタイムかノンリアルタイムかは重要な問題だし。
RTOSで言うリアルタイム、と、これらのリアルタイムがぜんぜん違うものを指してるのはわかるけど。
遅延のことを指してるのか、スループットのことを指してるのか、って感じなのかな。
0575デフォルトの名無しさん
2013/05/31(金) 19:03:11.370576デフォルトの名無しさん
2013/05/31(金) 21:45:28.79何ms以内にレスポンスが返ってくるみたいなやつのこと。
0577デフォルトの名無しさん
2013/05/31(金) 22:59:20.48学術論文なんかのタイトルでもいくらでもそうでないリアルタイムはあるんだが
http://scholar.google.co.jp/scholar?hl=ja&q=realtime&btnG=&lr=
それ以外認めない、それ以外の使い方する奴は素人って言われてもな。業界が違うだけだろ。
0578デフォルトの名無しさん
2013/06/01(土) 07:12:31.19俺は思ってるから、だいたいみんなの書く内容は当てはまる
0579デフォルトの名無しさん
2013/06/01(土) 08:05:57.830580デフォルトの名無しさん
2013/06/01(土) 08:32:40.01オンラインは低レベルなAtomicを(低レベルな外部処理に任せ)除いた残り(DB間の等)部分の同期手法。
0581デフォルトの名無しさん
2013/06/01(土) 09:03:19.07と言ったら平均処理速度が
入力のペースより速いこと
レスポンスが厳密に規定されるかは関係ないな
0582デフォルトの名無しさん
2013/06/01(土) 11:21:48.790583デフォルトの名無しさん
2013/06/01(土) 20:55:44.14これはバッチ処理の対義語としてのリアルタイム処理(=対話型処理)とは区別される
0584デフォルトの名無しさん
2013/06/02(日) 18:52:45.880585デフォルトの名無しさん
2013/06/02(日) 18:54:21.890586デフォルトの名無しさん
2013/06/02(日) 18:56:33.080587デフォルトの名無しさん
2013/06/02(日) 18:59:38.41gasは転送の向きが逆になる
0588デフォルトの名無しさん
2013/06/02(日) 21:44:25.30http://toro.2ch.net/test/read.cgi/tech/1314502612/
0589デフォルトの名無しさん
2013/06/02(日) 21:47:28.45Cは高級アセンブラ、とはよく言うけど、C++はどうなんだろう
0590デフォルトの名無しさん
2013/06/02(日) 21:54:00.120591デフォルトの名無しさん
2013/06/03(月) 06:40:18.770592デフォルトの名無しさん
2013/06/03(月) 08:03:49.540593デフォルトの名無しさん
2013/06/03(月) 15:21:00.740594デフォルトの名無しさん
2013/06/03(月) 15:24:53.450595デフォルトの名無しさん
2013/06/03(月) 15:33:48.77有難うございます。
0596デフォルトの名無しさん
2013/06/04(火) 00:24:58.39取得したファイルサイズと実際の終端までの長さが異なるのか、ゴミがくっ付いてきます。
ついてはこの原因が何なのかご教示いただきたいです。
バッファをmemsetでクリアしておけば解決するんですが、なるべくなら終端文字の代入で事を済ませたいです。
using namespace std;
ifstream ifs;
ifs.open("input.txt", ios::in);
size_t fsize = (size_t)ifs.seekg(0, ios::end).tellg();
ifs.clear();
ifs.seekg(0, ios::beg);
char *buff = (char*)malloc(fsize + 1);
ifs.read(buff, fsize);
ifs.close();
buff[fsize] = '\0';
0597デフォルトの名無しさん
2013/06/04(火) 00:30:05.17Windowsなら終端に0x0aがくっついて来るから削らないといけないよ
0598デフォルトの名無しさん
2013/06/04(火) 00:32:19.47今でもついてるんかい?
0599デフォルトの名無しさん
2013/06/04(火) 00:37:43.86律儀にくっつけてくれちゃうのがあるよ
0600デフォルトの名無しさん
2013/06/04(火) 00:38:25.33・readってバイナリ読み込み用だから\0デリミタはつかないのが普通
・get(buff, fsize+1);じゃだめだっけ?
0601デフォルトの名無しさん
2013/06/04(火) 00:56:45.98問題が再現する環境とファイルを絞って、それでわからなければ、それ全部晒すと何かわかるかもね。
0602596
2013/06/04(火) 00:59:48.19環境はWindows7 32bit版 + VC++でテキストファイルはSJISです。
標準出力にはファイル内容以外にヘヘヘヘヘヘヘヘなどのゴミが付加されます。
念のためファイル内容は「a」のみにしメモ帳で保存し直しました。
その場合のfsizeは1,全角の「あ」だと2です。
>>600
コンストラクタ等の存在しない単純な領域確保にはmallocを使用しています。
バイナリで読み込んだのは速度が欲しい(改行コードの統一処理が不要)だからです。
0603デフォルトの名無しさん
2013/06/04(火) 01:01:28.290604デフォルトの名無しさん
2013/06/04(火) 01:13:27.18読み込もうとしているファイルのサイズは
あなたの意図してるのと一致してる?
ファイルを一旦メモ帳で開き、
別名で保存してそれを処理してみたら?
0605デフォルトの名無しさん
2013/06/04(火) 01:16:23.48改行コードの制御に関わるのはファイルオープン時のbinary指定の方で、
開いた後のread/getはデリミタ周りに関係する…と思うのだけどそれ以前の話として
Windowsで速度がほしいなら、CreateFileWとReadFileやファイルマッピングで読んだほうがオーバヘッド少なくて済む。
これはまんま固定長バイナリリードなので、デリミタの付与は自前でやる事になるが、
デリミタ付与のようなオーバヘッドすらないって意味ではシンプルでわかりやすいかと。
FastIO系のAPIとかもあるみたいだけどあんまメジャーじゃないしこっちはパスしても良いと思う。
>>604
改行コード変換無し(バイナリオープン)でデリミタ付与読み込み(テキスト読み込み)したいってだけの話。
ゴミの件はデリミタ不足で未初期化領域に突入してるだけだからそこ気にしても何の意味もないと思うよ。
0606デフォルトの名無しさん
2013/06/04(火) 01:19:52.16"abcde\0ヘヘヘヘヘヘヘヘ"
だったりしてない?
0607デフォルトの名無しさん
2013/06/04(火) 01:21:34.86「デリミタ」って何のこと言ってんの?終端 '\0' のこと?
buff[fsize] = '\0' してあるんだから「未初期化領域に突入」は無いんじゃないの?
0608デフォルトの名無しさん
2013/06/04(火) 01:27:01.96今同じような環境で試したけど、再現しない・・
0609596
2013/06/04(火) 01:35:30.06>>603
>>605
ご指摘通りに指定したら解決しました。
ということは、ios::binaryを指定しないと\r\nが\nに短縮されてファイルサイズが縮むんですね。
今までgetメソッドがその処理を受け持つものだと思っていました。
でもios::endがその差を吸収してくれないならテキストモードで全内容を読みたいとき
readメソッドは使えずgetメソッドで一行ずつ読み込むしかないんですね。
ファイルマッピングは使ったことがありますが今回はクロスプラットフォームを実現したくて見送りました。
まあプリプロセッサで振り分ければいいので単なる無精ですが。
0610デフォルトの名無しさん
2013/06/04(火) 01:40:05.13「終端文字の代入を省略したい」と勘違いしてたわ…すまん
>>596
単にios::binary付ければ解決する気がする。
tellgで得られるのは改行変換前のバイト位置で、readで読むのは改行変換後のバイト数って事だと思う。
0611デフォルトの名無しさん
2013/06/04(火) 01:54:07.460612デフォルトの名無しさん
2013/06/04(火) 02:02:42.99tellg()やseekg()がうまく動かないでしょ
0613デフォルトの名無しさん
2013/06/04(火) 02:16:58.47binary 使わなくても固定サイズの read() を EOF まで繰り返し読めばいいよ。
サイズ取るのに seek して tell の移植性も完璧じゃないし。
http://www.jpcert.or.jp/sc-rules/c-fio19-c.html
0614デフォルトの名無しさん
2013/06/04(火) 03:22:23.83ないものとする」という問題があって、tellg()やseekg()を使うと動作がおかしく
なるので悩んだ事がある
結局トランザクションファイルを作ってテキスト→バイナリに一度変換してから
tellg()、seekg()で逆順に読んだ
そのファイル位置はもう一つのファイルに記録した
そうしないと「行数に制限がない」という条件を満たせない
0615デフォルトの名無しさん
2013/06/04(火) 04:08:15.05テキストモードでもtellとseekの対応自体は取れてるらしいから読めんこともないんじゃ…
…テキストモードでCRLFのLFんとこにシークした場合の動作が未定義とかだったりすると非常に時間掛かって実用的じゃない事になるかもだけど。
0616デフォルトの名無しさん
2013/06/04(火) 12:24:46.95できないんですよね?
0617デフォルトの名無しさん
2013/06/04(火) 13:45:34.21pos_type tellg();
basic_istream<charT,traits>& seekg(pos_type);
basic_istream<charT,traits>& seekg(off_type, ios_base::seekdir);
だから size_t はまずいんじゃ・・・
0618デフォルトの名無しさん
2013/06/04(火) 13:50:53.29定義を変更したのかもな
だとしたらnewする時はどうやってpos_typeからサイズを得ればいいんだ?
0619デフォルトの名無しさん
2013/06/04(火) 14:20:29.49C++11の規格票を見てもそれらしい対策はないね
今の所これを使うしかないのか
http://d.hatena.ne.jp/y-hamigaki/20061013
>多くの32ビット環境ではstd::streamoffが32ビットですが、std::streamposはそれ以上の精度を持っていることがあります。
>そのため、Boost.Iostreamsでは(処理系依存の方法で)可能な限りstd::streamposからオフセットを64ビットの精度で取り出す関数position_to_offset()が用意されています。
>このオフセットを表現するのにstd::streamoffでは足りないので、代わりにboost::iostreams::stream_offsetを使います。
>使っていて気が付いたんですが、(少なくともVC8付属のものでは)std::streampos同士の引き算などで意図せずオフセットの精度が落ちることがありました。
>なので、std::streamposに演算を施す場合は、一旦stream_offsetに変換しないといけません。
>これに関してコンパイラは警告を出してくれない(std::streamposの中でキャストしている)ので、注意深くコーディングする必要があります。
>どうせならstd::streamposも別クラスで置き換えてくれれば楽だったんですけどね。
勘弁してくださいorz
0620デフォルトの名無しさん
2013/06/04(火) 20:03:43.76処理系依存の方法を使った方がましだよ
0621デフォルトの名無しさん
2013/06/04(火) 20:26:54.03批判するより次いこーぜ
0622デフォルトの名無しさん
2013/06/04(火) 21:46:06.31E-mail: sage
内容:
全然勉強しないままとにかく手を動かして書いてた初心者なんだけど
typedef struct tagABC
{
int a;
int b;
int c;
float d;
float e;
float f;
float g;
:
:
} ABC ;
ABC abc[ NUMBER ];
みたいな感じで20〜30個程度の要素数の構造体を
#define NUMBER 10万ぐらい確保して
出来るだけ高速に代入したいんだが
5万ぐらいまでは60fps確保できても8万とかなると格段に遅くなる
代入をやめれば途端に負荷はほとんどなくなってCPU使用率5%以下
毎フレームの代入する数は変わらない
なんかよくわからないけどSTLコンテナとか勉強して導入した方がいいのかな
なんか使い方がまずいんだとは思うけど
0623デフォルトの名無しさん
2013/06/04(火) 22:06:27.59>STLコンテナ
今の状態で使うのはよした方がいい(だって遅いし)
だいたい何故にゲーム(多分)で10万もの構造体を毎フレーム初期化する必要がある? どんな処理だよ?
0624デフォルトの名無しさん
2013/06/04(火) 22:13:09.99ポインタのほうがいいのかな
0625デフォルトの名無しさん
2013/06/04(火) 22:16:52.70PCならマシンスペック振りかざして数を稼げるから
今のところボトルネックは描画でも運動計算でも無く代入の生成の部分みたいなので
今ちょうど仕様を大きく書き直してるから一緒に解決してしまいたい
0626デフォルトの名無しさん
2013/06/04(火) 22:20:36.23代入処理は毎フレーム多くても多分数千程度で
10万一挙にってことはまずありえないと思う
0627デフォルトの名無しさん
2013/06/04(火) 22:29:45.77代入してるところのコードは現状どんなかんじになってんだ
0628デフォルトの名無しさん
2013/06/04(火) 22:31:27.92トリップ付けるかageてくれれば質問者が誰か分かりやすいと思う
0630デフォルトの名無しさん
2013/06/04(火) 22:44:42.450631デフォルトの名無しさん
2013/06/04(火) 23:02:41.980632デフォルトの名無しさん
2013/06/04(火) 23:03:39.37まあCPUに限らずリソースは余るなら余らせとくが吉
0633デフォルトの名無しさん
2013/06/04(火) 23:32:59.901秒もかかるとは思えんのだが。
普通のWindowsパソコンの話なら。
0634622
2013/06/04(火) 23:40:43.70かなり最初に書いた部分で、間違いなくまずい書き方として初期化の値求めるために宣言とか入ってるから
メモリの確保と開放を10万回以上やってるっぽいがこれが大きいのか?
でも10万個目周辺で1000個程度の代入で10fpsとかになるんだよなあ
ちなみに2500Kのwin7_64bit
0635デフォルトの名無しさん
2013/06/04(火) 23:45:17.17ふむふむなるほど
0636デフォルトの名無しさん
2013/06/04(火) 23:49:00.290637デフォルトの名無しさん
2013/06/04(火) 23:49:32.46>メモリの確保と開放を10万回
0638デフォルトの名無しさん
2013/06/04(火) 23:55:37.90>メモリの確保と開放を10万回
|∧∧| (( ) ) (( ) ) ((⌒ )
__(;゚Д゚)___ (( ) ) (( ⌒ ) (( ) )
| ⊂l >>622 l⊃| ノ火.,、 ノ人., 、 ノ人.,、
 ̄ ̄|.|. .|| ̄ ̄ γノ)::) γノ)::) γノ)::)
|.|=.=.|| ゝ人ノ ゝ火ノ ゝ人ノ
|∪∪| ||∧,,∧ ||∧,,∧ || ボォオ
| | ∧ (´・ω・) (・ω・`) ∧∧
| | ( ´・ω) U) ( つと ノ(ω・` )
~~~~~~~~ | U ( ´・) (・` ). .と ノ
u-u ( ) ( ノ u-u
`u-u'. `u-u'
0639622
2013/06/04(火) 23:55:40.30でも最近のコンパイラだと
for内に変数宣言してもこんな事にはならないとも聞いたことがある
まあちょっとここんとこ何とかしてみるよ
0640デフォルトの名無しさん
2013/06/04(火) 23:57:14.82ええい、ソースを晒せソースを!
http://codepad.org/等を利用してうpれ!
0641デフォルトの名無しさん
2013/06/05(水) 00:03:02.99再現させる最低限のコードになるまで削る
という脳筋作業すらできない低脳には
0642622
2013/06/05(水) 01:17:29.79http://codepad.org/dzqFPuQk
インクルード面倒な人は
ttp://homepage2.nifty.com/natupaji/DxLib/dxdload.html
ここからDXライブラリダウンロードして展開したら
サンプルプログラム用のプロジェクトあるからそこに貼っつけてもらえればいい
色々省いたから未使用の要素とかあるし恥ずかしいコメントだらけだけどそこは生暖かい目で見といて
正直再現性のある最小コード作れるとは思わんかった
テンキーじゃない方の1キー押してる間代入し続けるからずっと押してもらって
7万辺になるとCPUの1コアが使用率上がって有効数が増えるスピードが目に見えて遅くなるのがわかると思う
0643622
2013/06/05(水) 01:37:31.92毎フレームせいぜい数十〜百回程度だった
そして単純に代入するだけでも再現性はあって
毎フレーム代入するパーティクルの数が多いほど負荷も増えてる模様
毎フレーム30ぐらいなら50fpsぐらい維持できるけど毎フレーム3000とかだと一瞬で1〜2fpsとかになる
0644デフォルトの名無しさん
2013/06/05(水) 02:04:52.89ってところで線形探索してるから重い。コレだと毎フレーム最悪80000*100要素探索することになる。
0645622
2013/06/05(水) 02:11:42.02でもそれだったら1押すの止めてパーティクル生成してなくても重くなると思うんだよね
昔forループだけで重くなるライン探したけど確か100万ぐらいまではいけた気がする
0646デフォルトの名無しさん
2013/06/05(水) 02:27:20.01書き込み数が同じにも関わらず、どんどん時間がかかるようになるのは、未使用領域の探索に時間が掛かっているからだ。
しかも一個未使用領域を見つける度に、配列の最初から探索をやり直している。非効率すぎ。
この方法だと、例えば配列の先頭6万個が使用済みの場合、
createSplash()を呼ぶ度に(6万 * 作りたいsplash数)以上の
ループと変数読み出しが(未使用領域の探索のために)発生する。
3000個のsplashを作りたいなら1億8000万以上だな。
0647622
2013/06/05(水) 02:47:49.73確かにこれは大問題だった
これの改善案って
未使用領域を見つけても探索をやり直さないようにする以外にあるかな
もっと根本的に仕組みを変えてもいいし案があれば教えて欲しい
0648デフォルトの名無しさん
2013/06/05(水) 03:46:17.10前回の状態を別変数に持たせるとか
例えば未使用のsplashIDだけ必要なら
例えば変数pにsplashID1000ずつまとめて未使用のsplashIDだけ格納していく
p[0]に0-999
p[1]に1000-1999
...
なら
たとえばsplashID987654が未使用ならp[987]に入ってる
0649デフォルトの名無しさん
2013/06/05(水) 03:58:00.93追加は常に最後尾で++個数
削除は削除位置に最後尾のデータをコピーして--個数
0650デフォルトの名無しさん
2013/06/05(水) 06:18:23.59基礎がなってないのにコード書き始めるから大惨事になるんだよ
趣味ならまだいいが基本情報すら持たないカスに仕事でコンピュータ触らせたく無い
0651デフォルトの名無しさん
2013/06/05(水) 06:27:42.22>未使用領域を見つけても探索をやり直さないようにする以外
静的にとった領域に対して使用中要素のリンクリストと未使用要素のリンクリストを持つのがこの手のげむのセオリーじゃねーの?
0652デフォルトの名無しさん
2013/06/05(水) 06:28:12.22パーティクルが有効になる順番と死ぬ順番が一致してれば、そうだね。
一致してないとリストの中間の要素を削除するはめになって、削除コストがマッハ。
一致してない場合は双方向リンクリストをつかえば探索と破棄が低コストでできる。実装はググって。
std::listは削除が低コストでできないから、この用途には役にたたないよ。
>> 650
学校や会社で課題出されたならともかく、自分の意思でプログラム始めるにあたって
基本情報から入る人なんているの?
0653デフォルトの名無しさん
2013/06/05(水) 06:44:49.08いきなり最初からはなくても
一週間もすれば、あ、これプログラム言語だけじゃなんも出来んわ、って気が付く
そこからネットで情報調べれば基本情報にたどり着くよ
0654デフォルトの名無しさん
2013/06/05(水) 07:02:25.150655デフォルトの名無しさん
2013/06/05(水) 07:08:17.570656デフォルトの名無しさん
2013/06/05(水) 07:40:02.33マジレスすると基本情報に求められるコーディングだと「リスト」とかは出てこないぞ
ゲーム関係の教本とか蟻本とかを読んで勉強する方が速い
例:
http://www.amazon.co.jp/dp/4798021180
http://www.amazon.co.jp/dp/4797304952
http://www.amazon.co.jp/dp/4839941068
0657デフォルトの名無しさん
2013/06/05(水) 07:48:20.64中間要素の削除でも>>649なら常にO(1)だろ。
0658デフォルトの名無しさん
2013/06/05(水) 11:42:34.830659デフォルトの名無しさん
2013/06/05(水) 11:59:43.34英語で英検 的な残念さがある
0660デフォルトの名無しさん
2013/06/05(水) 12:09:05.49ID無効と、任意IDと、強制IDの3つがある。
ageでIDが出るのは任意IDのやつで、元々はメールアドレス書いてるならID要らんという思想によるもの・・・
・・・だったと思うんだが、sageとかの機能にメール欄流用した結果sage進行中心の板ではID無効同然になった。
0661デフォルトの名無しさん
2013/06/05(水) 12:29:52.610662デフォルトの名無しさん
2013/06/05(水) 12:46:40.650663デフォルトの名無しさん
2013/06/05(水) 15:42:55.960664デフォルトの名無しさん
2013/06/05(水) 16:05:37.510665デフォルトの名無しさん
2013/06/05(水) 16:26:05.70・パーティクルの寿命が大体同じなら、リングバッファ状にして管理する(最大数突破時の強制再利用にも有効)
・使用状況フラグをビットマップに落とすとかで単純に探索速度を稼ぐ
あと種類ごとに共通なデータは種類番号とか共通データへのポインタにしてしまえば色々節約できる。
メモリアクセスのコストも馬鹿にはできんから、場合によっては参照時に計算したほうが良いことも有る。
0666デフォルトの名無しさん
2013/06/05(水) 16:55:04.860667デフォルトの名無しさん
2013/06/05(水) 16:56:27.750668デフォルトの名無しさん
2013/06/05(水) 19:20:21.70基本情報を足切りに使わない会社は信頼できない仕事任せたくない
0669デフォルトの名無しさん
2013/06/05(水) 19:21:15.11コーディング以外のところが空っぽだから基本情報とるんだよ
0670デフォルトの名無しさん
2013/06/05(水) 20:01:56.64おまえ税金で食わせて貰ってる連中か
その足きりとやらを通ったからって何だ? 根本的におかしいぜ
コピー機が使えるバカや、英語を話すバカを、何に使えって言うんだよ
金取るに値する仕事しろ!
0671デフォルトの名無しさん
2013/06/05(水) 20:17:59.330672デフォルトの名無しさん
2013/06/05(水) 20:25:22.44せめて応用情報とかオラクルマスターとかにしとけ 基本情報なんて受験費用の無駄だ
0673デフォルトの名無しさん
2013/06/05(水) 20:27:42.43コピー機すら使えないバカには用はないよ (w
まあ、このてのアホを選別するぐらいの役にはたつようだな。
0674デフォルトの名無しさん
2013/06/05(水) 20:32:31.03仕事に必須かというとそうでもないと思うw
0675デフォルトの名無しさん
2013/06/05(水) 20:45:50.86仕事に必須?
んなわけないじゃん。
それすら取れないアホを足切りするだけでしょ
0676デフォルトの名無しさん
2013/06/05(水) 20:55:16.46退職願はここで書くんじゃなく、上司に提出しろw
0677デフォルトの名無しさん
2013/06/05(水) 21:26:07.21資格は実力が無い人が自分を凄そうに見せるために取るもの
0678デフォルトの名無しさん
2013/06/05(水) 21:43:37.97就職もできないやつが退職願いとか、笑える
0679デフォルトの名無しさん
2013/06/05(水) 21:46:28.75はじめてみた (w
0680デフォルトの名無しさん
2013/06/05(水) 23:20:37.54実力云々以前にコード数行書けるかどうかってレベルのやつと高校生だけだろ、基本情報を誇ることが出来るのは。
その程度でも無いよりかはマシだし、基本情報不合格して基本情報不要って叫んでる馬鹿を弾く程度の事はできる。
0681デフォルトの名無しさん
2013/06/05(水) 23:26:51.98「基本情報不合格して基本情報不要って叫んでる馬鹿」へ限定した理由って何?
条件は正確にしないとバグのもとだよ
0682デフォルトの名無しさん
2013/06/06(木) 00:18:37.330683デフォルトの名無しさん
2013/06/06(木) 00:40:53.260684デフォルトの名無しさん
2013/06/06(木) 00:44:31.27例えば単純にconstructorとかdestructorと書くようにすればいいと思うんですが。
クラス名が変わった時のリファクタリングも楽だし。
0685デフォルトの名無しさん
2013/06/06(木) 00:46:19.720686デフォルトの名無しさん
2013/06/06(木) 00:51:04.05Aの一時オブジェクトが欲しい時
A::constructor()とかくより
A()とか書いたほうが簡単だから?
識別名には予約語を使わないというポリシー?
A a();という文法がAコンストラクターがオペレータっぽく見えるから?
(constructorだとA a.constructor();とかく必要がある?)
なんとなくそのクラスを使うときに楽だから、というのが理由っぽい
0687デフォルトの名無しさん
2013/06/06(木) 00:57:12.95コンストラクタの名前と一時オブジェクトの生成方法は関係ないだろ。
0688デフォルトの名無しさん
2013/06/06(木) 01:30:19.62まったくそうだよな。C++だけならまだしも
JavaやC#もクラス名を書かされるのはイライラする。
0689デフォルトの名無しさん
2013/06/06(木) 05:50:48.54ないやつが我が物顔でIT業界に入ってくるから言ってるんだよ
一度新人研修で教えればわかる
未経験OKを業界規模で禁則事項にして基本情報を就職の必須資格にすべきだ
0690デフォルトの名無しさん
2013/06/06(木) 05:56:02.59少なくともこいつは基本情報レベル以下のカスだから永遠に趣味グラマでいて欲しい
しかしこいつよりカスなやつが平気で面接受けにくるのが今のIT業界なんだよな
0691デフォルトの名無しさん
2013/06/06(木) 06:49:26.61自称『受けるまでもない人』は、お帰りください
0692デフォルトの名無しさん
2013/06/06(木) 06:58:35.390693デフォルトの名無しさん
2013/06/06(木) 07:17:57.150694デフォルトの名無しさん
2013/06/06(木) 07:28:43.48thisを使えばいいと思うんだ
0695デフォルトの名無しさん
2013/06/06(木) 07:34:18.70~this()
すごい違和感がある気がする
0696デフォルトの名無しさん
2013/06/06(木) 07:42:38.72かと思ったけど this(decltype(*this) const&) でいいのか。いや、良くないような・・・キモイ。
0697デフォルトの名無しさん
2013/06/06(木) 07:57:20.520698デフォルトの名無しさん
2013/06/06(木) 07:59:18.47...
virtual ~self() throw();
self(self const&);
self& operator=(self const&);
};
0699デフォルトの名無しさん
2013/06/06(木) 08:07:06.38class A{label_place_collection::constructor(label_place_collection::this_type&);};
0700デフォルトの名無しさん
2013/06/06(木) 08:07:15.71this(GNuuuu const&);.
virtual ~this() throw();
GNuuuu& operator=(GNuuuu const&);
};
0701デフォルトの名無しさん
2013/06/06(木) 08:22:46.22中途半端だな
0702デフォルトの名無しさん
2013/06/06(木) 08:44:24.86class GNuuuu {
$(GNuuuu const&);.
virtual ~$() throw();
$& operator=($ const&);
};
0703デフォルトの名無しさん
2013/06/06(木) 08:47:01.080704デフォルトの名無しさん
2013/06/06(木) 09:41:31.33class GNuuuu {
I(GNuuu const&);
virtual ~I() throw();
I& operator=(I const&);
};
0705デフォルトの名無しさん
2013/06/06(木) 10:39:26.20↑を参考に↓を書いてみました。
http://codepad.org/b2ingmwV
実行してもコーデックの数がゼロと出てしまい、進みませんでした。
どこが悪いのでしょうか?
0706デフォルトの名無しさん
2013/06/06(木) 11:32:55.28あとスレチなので環境依存スレに移動しろ
0707デフォルトの名無しさん
2013/06/06(木) 13:43:03.82返戻値は確認しました。が、それでもだめです。。。
すみません、環境依存スレに移動します。
0708デフォルトの名無しさん
2013/06/06(木) 20:07:22.99コンストラクターは使えないよね?
何でなんだぜ?
0709デフォルトの名無しさん
2013/06/06(木) 20:08:00.960710デフォルトの名無しさん
2013/06/06(木) 20:12:07.68勘違いスマソ
0711デフォルトの名無しさん
2013/06/06(木) 20:12:39.330712デフォルトの名無しさん
2013/06/06(木) 23:58:37.630713デフォルトの名無しさん
2013/06/07(金) 00:11:59.110714デフォルトの名無しさん
2013/06/07(金) 00:14:48.03互換性を考慮した結果ほぼ一緒になっちまっただけで
0715デフォルトの名無しさん
2013/06/07(金) 02:48:53.24くらいで、クラスは構造体を継承できるし。(逆は見た事無いので分からん)
だが、コンパイラは厳密に区別してプログラマに決して混同を許さないww
0716デフォルトの名無しさん
2013/06/07(金) 02:51:56.34Cのことを見捨てて、何もないところから綺麗に仕様を作っていれば、きっと…
0717デフォルトの名無しさん
2013/06/07(金) 02:54:18.320718デフォルトの名無しさん
2013/06/07(金) 05:35:54.13ぼろぼろでしょう、D言語をみよ
0719デフォルトの名無しさん
2013/06/07(金) 06:01:20.930720デフォルトの名無しさん
2013/06/07(金) 06:50:11.68誰にも使われずにきれいなまま朽ち果てるだけでしょ。
0721デフォルトの名無しさん
2013/06/07(金) 07:25:42.15こう説明する人は多数見るけど「何」がpublicなのかを正しく説明する人を見たことがない
0722デフォルトの名無しさん
2013/06/07(金) 07:29:39.00クラスはデフォルトでprivateにしたかったが
structはデフォルトでpublicにしないと
Cとの互換性が保てない
だからclassを導入したと考えると良い
0723デフォルトの名無しさん
2013/06/07(金) 07:29:39.380724デフォルトの名無しさん
2013/06/07(金) 07:30:34.47C#が割と普及してきたし、
結局言語やライブラリが便利かどうかで決まると思う
0725デフォルトの名無しさん
2013/06/07(金) 07:33:50.01継承はプライベートにするくらいならHas aで実装するし
プライベートなメンバやメソッドは後ろに追いやった方がヘッダがみやすい
TMPやるときもパブリックが非常に多い
最近classを使って書いたことほとんどないよ
0726デフォルトの名無しさん
2013/06/07(金) 07:44:07.78メンバはprivateがデフォルトの方がいい
0727デフォルトの名無しさん
2013/06/07(金) 08:20:55.62> 「何」がpublicなのかを正しく説明する人を見たことがない
説明するまでもないから...
0728デフォルトの名無しさん
2013/06/07(金) 10:09:43.61気持ち悪いからほとんど使わないけど
0729デフォルトの名無しさん
2013/06/07(金) 10:20:14.710730デフォルトの名無しさん
2013/06/07(金) 10:25:58.210731デフォルトの名無しさん
2013/06/07(金) 10:37:29.390732デフォルトの名無しさん
2013/06/07(金) 12:30:21.240733デフォルトの名無しさん
2013/06/07(金) 13:37:50.72その時点で負けは決まっている
0734デフォルトの名無しさん
2013/06/07(金) 15:39:05.910735デフォルトの名無しさん
2013/06/07(金) 15:46:50.83エラーメッセージが分かりやすい最新の環境を使え
0736デフォルトの名無しさん
2013/06/07(金) 16:25:14.63「未知の型T」で起きる不具合は対策が難しいんだよ
Tに入りうる型がすべて解っていてもテスト工数が絶望的だったり
0737デフォルトの名無しさん
2013/06/07(金) 20:08:44.68int main(){
char a[50][50];
int i;
int j;
for(i=0;i<50;i++){
for(j=0;j<50;i++)
a[i][j]='a';
}
}
ビルドは成功するのにコマンドプロンプトで起動すると動作を停止しましたって表示されます
for文が問題だと思うのですがどう悪いのでしょうか
0738デフォルトの名無しさん
2013/06/07(金) 20:11:33.00無限ループだからな
0739デフォルトの名無しさん
2013/06/07(金) 20:14:39.79C++にこんなヘッダーは無い。スレ違い。
0740デフォルトの名無しさん
2013/06/07(金) 20:17:41.94あまえんな
0741デフォルトの名無しさん
2013/06/07(金) 20:18:04.81いちいちTにはいるすべてを網羅してテストするのですか‥‥アマチュアには想像できない世界だと痛感します。
0742デフォルトの名無しさん
2013/06/07(金) 20:24:07.71ほかの方々も厳しいお言葉ありがとうございます
そのヘッダーはC++のものではないのですね...
勉強しなおしてきます
0743デフォルトの名無しさん
2013/06/07(金) 20:30:16.40事象が再現する最小限のコードに削ってから出直せ
まず a[i][j]='a' を削る→再現する
次に for(j=0;j<50;i++);を削る→再現しない
→こんな糞スレで質問するまでなく原因が判明
0744デフォルトの名無しさん
2013/06/07(金) 20:37:40.85いつになったらプログラムや設計ができるのか
就職活動で必死にc++アピールしたのは何だったのか
0745デフォルトの名無しさん
2013/06/07(金) 20:58:10.62別に網羅的なテストをする必要なんかまったくなくて、
エラーが出た時に必要に応じてすればいいだけだと思う
テンプレートなんだからテストコードは共通化できるはずだし、
自分たちで造ったテンプレートであれば要件も最初から分かってるはずだし
っていうかダミーのプレーンな型を一つ定義してテストすれば、テスト通った時点で
テンプレートパラメータに何が要求されるか網羅できるはずだよね
0746デフォルトの名無しさん
2013/06/07(金) 21:00:10.36お疲れ様・・・。
仕事って常に自分のやりたいことができるわけではないからね・・・。
0747デフォルトの名無しさん
2013/06/07(金) 21:09:11.85あるよ
0748デフォルトの名無しさん
2013/06/07(金) 21:17:58.62それでもお偉いさんは全部網羅しろ、っていうんですよ
0749デフォルトの名無しさん
2013/06/07(金) 21:18:05.41その仕事プロジェクトにC++使われているのか?
C++を使うプロジェクト自体がそんなに多くないし
0750デフォルトの名無しさん
2013/06/07(金) 21:20:24.11>テンプレート絡みのは全てコンパイル時エラー
んなこたーない
template<typename T>
void fuck(T v)
{
printf("%d, %d", v, 100);
}
0751デフォルトの名無しさん
2013/06/07(金) 21:35:43.04言いたいことは分からないでもないけど、それはテンプレートのせいじゃないんじゃないかな…
テンプレートを使わなければ、そういう間違いをしなくて済むというわけじゃないし、
対策としてはintにstatic_castしてみればいいんじゃないかな
0752デフォルトの名無しさん
2013/06/07(金) 21:39:14.27方眼紙に何を書いているの?
0753デフォルトの名無しさん
2013/06/07(金) 21:39:32.30ついでに言えば、そのパターンも intじゃない空の型一つでテストすればエラーを検出できるから、やっぱり網羅的なテストは必要ない
0754デフォルトの名無しさん
2013/06/07(金) 21:40:14.570755デフォルトの名無しさん
2013/06/07(金) 21:46:28.12ある環境でTがshortやintやlongだとOKで
floatやlong longだと正しく動かないのに
テンプレートが関係ないとはお前アホか
template<typename T>
void fuck(T v) {
printf("%d", static_cast<int>(v));
}
これだって何の解決にもなってない
0756デフォルトの名無しさん
2013/06/07(金) 21:47:41.63二種類のテストがいる。
テンプレート関数の方とテンプレートパラメータに成りうる型が
そのテンプレートのコンセプトに従っているか、と。
後者のテストは当然テンプレートで書けるので、仰るとおり一回
書けば終わる。
>>748
745がいうように、お偉いさんの言う網羅テストはちゃんと省力的
に処理できる。
ただまあ、もしExpression Templateを使っているとか、
汎用的なテンプレートライブラリとして納品しなきゃならんのなら
ご愁傷様。無理。
0757デフォルトの名無しさん
2013/06/07(金) 21:51:03.88int,X<int>,X<X<int>>など可能性は無限大
0758デフォルトの名無しさん
2013/06/07(金) 21:56:28.34型エラーって出来ないの?
0759デフォルトの名無しさん
2013/06/07(金) 21:56:50.70インスタンス化される型の種類は有限だと思うが
0760デフォルトの名無しさん
2013/06/07(金) 22:00:59.94>インスタンス化される型の種類は有限
ではその有限の種類を列挙する方法を教えて下さい。
自分の書いたX<T>を含むプログラム内に含まれる、
Tの取り得る型の見つけ方を。
0761デフォルトの名無しさん
2013/06/07(金) 22:06:21.70文法エラーしか検出できないのに
コンパイルエラーが無かったら問題ない
とか酷すぎる
0762デフォルトの名無しさん
2013/06/07(金) 22:07:29.48ものによるんでない?
例えば特殊な文字列テンプレートクラスでエンコード情報あたりを
テンプレートパラメータにしてるならそれで列挙できるだろうし
一種のコンテナでアロケータをテンプレートパラメータにするんなら
用意したアロケータを列挙すればいい
テンプレートパラメータがイテレータとかで本当に汎用的な場合で、
かつそのテンプレートがやたらそこら中から呼ばれているような場合
は厄介なのは分かるしご愁傷様だけど、
どうしてもっていうならシンボルからデマングルで取れるかもね
0763デフォルトの名無しさん
2013/06/07(金) 22:07:58.730764デフォルトの名無しさん
2013/06/07(金) 22:08:42.41例えばstd::sortの結果は
要素のoperator<の実装に依存するので、そういう意味では任意の型についてソート結果を保証することはそもそも論理的に不可能。
std::sortのテストでできることはoperator<で規定される大小関係通りにソートされることのみ
で、ある型が正しくソートされることを保証する義務は呼び出し側にある
君が提示したprintfコードも同じ
つまり未知の型をすべて網羅したテストを行うというのは初めから要求が破綻している
0765デフォルトの名無しさん
2013/06/07(金) 22:14:34.65kuso<typename unko<string>::X, 0721>
とかいうコードをどうやって網羅テストすんのよ
0766デフォルトの名無しさん
2013/06/07(金) 22:25:30.85なるほどね
0767デフォルトの名無しさん
2013/06/07(金) 22:26:40.70「テンプレートパラメーター依存の型をテンプレート引数に使用禁止」
「テンプレートクラスをテンプレート引数に使用禁止」
「非タイプなテンプレート引数禁止」
にしたらTは有限になる。
つまりvector<string>的なのは禁止な。
0768デフォルトの名無しさん
2013/06/07(金) 22:31:39.360769デフォルトの名無しさん
2013/06/07(金) 22:34:54.08じゃないとビルド終わらん
0770デフォルトの名無しさん
2013/06/07(金) 22:44:01.76有限かどうかじゃなくて
その有限の種類を列挙することが
困難だから問題なんだろ?
マングリ返しするしかない
0771デフォルトの名無しさん
2013/06/07(金) 22:54:41.98template<int n>
fib {
static int k(){return fib<n-1>::k();}
}
この手のは有限でも無理だろ?
メタプログラミングでの網羅確認は
机上のコードレビューと同じレベル。
0772デフォルトの名無しさん
2013/06/07(金) 23:09:39.66コンパイル時にnは決まるんだからそれテストすれば十分じゃない?
そのnを探すのはコードレビューするしかないという意味だとすると
そりゃまあそこは頑張るしかないが、それでも例えば
template <int n> class checked_fib;
template <> class checked_fib<256>{}; // レビューで見つけたnその1
template <> class checked_fib<16>{}; // その2
template <int n> class fib : checked_fib<n> {};
とかガード書けておけば抜けはビルド時に見つけられるわけだし。
0773デフォルトの名無しさん
2013/06/07(金) 23:16:13.54だったりすることもあると思うので
そのfibくらいなら、上限決めて全数検査しちゃう手もある
0774デフォルトの名無しさん
2013/06/07(金) 23:18:28.12全パターンは無理だろうけど、n = 0〜1000で合ってりゃ大丈夫だろ
0775デフォルトの名無しさん
2013/06/07(金) 23:19:28.25100キロ行のうんこテンプレライブラリを使用した
1行のプログラムを書く度に、
100キロ行のコードを試験するのですね。
0776デフォルトの名無しさん
2013/06/07(金) 23:20:15.63fibの意味が理解できなかったのか?
0777デフォルトの名無しさん
2013/06/07(金) 23:29:49.29解説お願いします
0778デフォルトの名無しさん
2013/06/07(金) 23:43:11.74みたいなメタプログラミングうんこ盛りなコードは、
特定のnで確認してもそれが意図した通りなのか
どうかが自明でないってことでは。
0779デフォルトの名無しさん
2013/06/07(金) 23:51:10.000780デフォルトの名無しさん
2013/06/07(金) 23:51:10.98仕様的にはホワイトリスト方式にして、試して動いたら使用可能な型が増えていくようにすれば楽かもな。
動かない時は悪足掻かない。直ぐ諦めて別に一から書き起こそうぜw
実際どうなんだろうな?アッチはアッチで動く状態を維持したまま、コッチでも動くようにする努力と、もう
それはコッチでは動かないんだと割り切って一から書き起こす努力。
経験的に後者の方が低コストなんじゃねーか?って気がする。
0781デフォルトの名無しさん
2013/06/08(土) 00:16:09.11と違うことが後から判明して、かつコッチはコッチでその動作から
もはや変えられない場合で、
それって要はテンプレートで置換できないものをテンプレート
パラメータにしてたってことだから、
素直に特殊化しちゃった方が賢明だと思う。工数的にも。
後でリファクタリングできる場合は、アッチとコッチの共通I/Fを
改めて切り直した方が上手くいくことが多い気がする
どっちか保持したままやると、もう一方が無理しがちなので
0782デフォルトの名無しさん
2013/06/08(土) 00:29:44.88型をパラメータにとるテンプレートに関しては:
a-1: 任意の型については必要なメンバーやtypedefを備えているかどうかの話なので、ダミーの型一つに対してテストすればおけ
a-2: 特定の型について特別な要求があるのなら、その型については個別にテストする。
a-3: 任意の型について「あらゆる意味で正しい結果」を保証したい( >>755みたいなの)というのは、要求そのものが論理的に破綻しているので却下。そういうのは個々の呼び出し側でテストすべきで、テンプレート側で考慮すべきことではない
値をパラメータにとるテンプレートに関しては:
b-1: 非テンプレートなプログラムと同じ事なので、あえてテンプレートの文脈で語る意味がない
b-2: そもそもの話の発端はテンプレートのデバッグが困難でクソという話なので、fibとかみたいに積極的にテンプレートを活用しにいっているケースは微妙に話がずれてる
0783デフォルトの名無しさん
2013/06/08(土) 00:38:39.01テストを実際に行うかどうかはともかく
結果的に不具合が起きたとき、どっちが悪いのか
君は自分のコードを神のコードか何かのつもりにでもなっているのか
数学的な証明を、実務としてちゃんとやっているのか
やっていないとは言わない、本当にやっているのか
0784デフォルトの名無しさん
2013/06/08(土) 01:06:18.17・試験の対象は最終的にはテンプレート(例:X<T>)ではなくあくまで
そのインスタンス(例:X<int>, X<long>)
・これをテンプレートとパラメータの二つに分けて試験する
・テンプレートについてはパラメータの共通の振る舞いを決めて、それ
だけを実装したモックを用意したテストを書く
・余裕があれば正しく振る舞わないモックも用意して異常系での動きも
試験する、境界条件での動作も同様
・テンプレートパラメータに成りうる型については、上記の共通の振る
舞いに従っているかどうかテストすれば十分
・上記で十分なはずだが、どうしても上司が五月蠅ければ、モック用の
試験にも突っ込んでおく(案外バグが見つかる…)
・何がテンプレートパラメータに成りうる型かはいろいろ頑張って探す
・探しきれないほど汎用なテンプレートの場合、完全網羅は諦めて、
仕様と睨めっこして現実的なおとしどころを決める
とかかなあ。「あらゆる型」とか「可能性のある型すべて」ではなくて
一定のタガにはめるのがコツ。C++14だとそこでconcept liteを使う。
0785デフォルトの名無しさん
2013/06/08(土) 01:11:11.90でそのconcept liteとやらは
先日のドラフトの何章に書いてあんの?
0786デフォルトの名無しさん
2013/06/08(土) 01:11:42.770787デフォルトの名無しさん
2013/06/08(土) 01:18:51.40確かにそれはテンプレート周りでよくあるタイプのバグで、
コンパイル時にはエラーにならないからテスト書かないと
発見できない
(この例そのものについては警告くらい出そうだが)
この例の場合は、暗黙にsizeof(T) < sizeof(int) && is_integral<T>
という振る舞いを仮定しているので、Tとして渡されうる型に
対してこの条件を満たすかテストすればよい
もっとも、そこまで分かっているならmplとenable_if使えば
コンパイルエラーにすることもできるけど
0788デフォルトの名無しさん
2013/06/08(土) 01:19:33.20あれ、17だっけ?まあ当面使えないからどっちでもいいよ
0789デフォルトの名無しさん
2013/06/08(土) 01:29:23.73そもそも任意の型に対して「あなたの期待する結果」を要求することは
論理的に不可能だといっている。
>>782でも言ったが、個別の型に対して特別な要求があるのなら、
それについてはテストすればいい。
floatやlong longについて、それに応じた「正しい」結果を出力するという
要件があるならそうすればいいだろう
現実的に考えれば、 >>755みたいなののに関しては
1. 特定のメンバー関数を備えたオブジェクトであれば、そのメンバーを呼んで文字列化する
2. プリミティブ型については個別の実装を用意する
というのが落とし所だろう。
その場合、プリミティブ型については網羅テストを行うべきだが、任意の型に関しては、単に必要なメソッドを備えたダミーの型を一つ用意して、それに対するテストを行えば用は済む。
そういうことを踏まえた上で、
>テンプレート絡みのは全てコンパイル時エラー
>ダミーのプレーンな型を一つ定義してテストすれば、テスト通った時点でテンプレートパラメータに何が要求されるか網羅できるはずだよね
と言ったんだ
0790デフォルトの名無しさん
2013/06/08(土) 01:34:01.39NG指定しづらいじゃないか
0791デフォルトの名無しさん
2013/06/08(土) 01:35:24.460792デフォルトの名無しさん
2013/06/08(土) 04:43:47.57structは単にデータを集約するしくみであって、どこまでいってもメンバの詳細に興味がある場面で使う
この場合の設計は、structを食わす手続きが簡明になるとか、実行効率が上がるとかいった基準で
まずstruct内部の詳細から始まる
伝統的な手続き型プログラミングとはそーいうものだし、
classはむしろ詳細を隠蔽して抽象化を果たすためのしくみであって、
classの設計は、他のクラスに対してどうみせかければシステム全体として無矛盾性とか一貫性を保てるか、という観点で
まず公開インターフェースの設計から始まる
臭いものをしばしば臭いまま放置して蓋だけをする
0793デフォルトの名無しさん
2013/06/08(土) 04:56:05.24Simuraで書いた俺様の完璧なプログラムをまともな速度で動かせんのかヴォケ>計算機業界全体に対して:
という不純な雄叫びから始まり、
Simuraの特性と当時の計算機の中途半端なリソースとを整合させて便利かつ高速なオブジェクトコードを吐く言語を実現する
という中途半端な2目標同時追求を行った果てに生まれたものなので
いろいろ不純で中途半端なのは仕方が無い
0794デフォルトの名無しさん
2013/06/08(土) 05:00:01.46> structは単にデータを集約するしくみであって
その理論だと、 struct にメソッドとか作れなくていいはずだが?
0795デフォルトの名無しさん
2013/06/08(土) 05:11:02.12いやとにかくストロストルウップ先生はSimula(←>793のを訂正)で書いた
ご自身の完璧なプログラムを高速に動かすこと以外はわりとどうでもよかったので
C++の言語仕様は実装が出来る限り手を抜ける形で進めたとかそういうオチ
structはclassと共通化され、純粋なstructを残す手間を惜しんだ
ほかには、クラス内での定数の定義をenumハックで解決してるじゃん何か問題でも!?
と強硬に主張し、static const intの導入に抵抗したりもした
0796デフォルトの名無しさん
2013/06/08(土) 05:40:14.60あるとするなら<cstdio>じゃね
0797デフォルトの名無しさん
2013/06/08(土) 06:32:30.520798デフォルトの名無しさん
2013/06/08(土) 07:11:02.08翡翠賞というのは、アナタの妄想では?
0799デフォルトの名無しさん
2013/06/08(土) 07:45:35.82D ¶2
These are deprecated features, where deprecated is defined as: Normative for the current edition of the Standard, but not guaranteed to be part of the Standard in future revisions.
D.5 ¶1
For compatibility with the C standard library and the C Unicode TR, the C++ standard library provides the 25 C headers, as shown in Table 154.
Table 154 - C headers 抜粋
<stdio.h>
0800デフォルトの名無しさん
2013/06/08(土) 07:59:51.360801デフォルトの名無しさん
2013/06/08(土) 09:53:12.82ハゲはもうC++から身を引いた方がいい
ウザすぎ
0802デフォルトの名無しさん
2013/06/08(土) 10:13:03.33ビルヨネ/ビャーネ
ストラウス/ストロス/ストロヴス
トラップ/トルップ
0803デフォルトの名無しさん
2013/06/08(土) 10:20:59.39Wiipedia的にはビャーネ・ストロヴストルップがせいかいかと
http://www.stroustrup.com/pronounciation.wav
↑の音声でも言っているが、発音揺れは当人も承知のようだ
0804デフォルトの名無しさん
2013/06/08(土) 11:03:31.67まあハゲはハゲだ
0805デフォルトの名無しさん
2013/06/08(土) 11:11:57.59ググって出てきやすい、って意味で言ってるんじゃね?
「ストロストルウップ」でググっても全然引っかかってこないし
(引用符付きだと「"ストロストルウップ"との一致はありません。」、無しだと全然関係ないページが出てくる)
0806デフォルトの名無しさん
2013/06/08(土) 11:20:56.070807デフォルトの名無しさん
2013/06/08(土) 12:01:15.90発音がうまいと褒められたとか何とか。
0808デフォルトの名無しさん
2013/06/08(土) 12:02:42.910809デフォルトの名無しさん
2013/06/08(土) 12:10:39.280810デフォルトの名無しさん
2013/06/08(土) 12:17:38.85すっぽんぽん
ぷらぷら
これらが全てつながっているとしたら…
0811デフォルトの名無しさん
2013/06/08(土) 13:09:03.75頭皮を隠さないことも加えてあげてください
0812デフォルトの名無しさん
2013/06/08(土) 14:01:25.310813デフォルトの名無しさん
2013/06/08(土) 16:37:35.370814デフォルトの名無しさん
2013/06/09(日) 22:50:00.90virtual ~unko() = 0;
};
struct X :unko{
~X(){}
};
int main(){X i;}
このプログラムがエラーになるんですが
何故なんでしょうか?
0815デフォルトの名無しさん
2013/06/09(日) 23:02:27.980816デフォルトの名無しさん
2013/06/09(日) 23:17:58.62典型例なアスペ回答乙
エラーメッセージ見りゃわかるだろ
0817デフォルトの名無しさん
2013/06/09(日) 23:22:47.230818デフォルトの名無しさん
2013/06/09(日) 23:27:27.79virtual ~unko() = 0;
};
unko::~unko(){}
問題1 純粋仮想関数なのに実体を持つのは変だろ
問題2 実体が必要ならそもそも=0禁止にするのが筋じゃね?
問題3 virtual ~unko()=0{}がダメなのは何故?
問題4 何で実体が必要なの?
これらの疑問を816が解決します↓
0819デフォルトの名無しさん
2013/06/09(日) 23:37:24.95その理由までは書かれていない
規格に書いてないことは
憶測でしかないので答えられませぬ
0820デフォルトの名無しさん
2013/06/09(日) 23:40:17.260821デフォルトの名無しさん
2013/06/09(日) 23:47:31.810822デフォルトの名無しさん
2013/06/09(日) 23:57:14.06コンストラクタ・デストラクタは継承関係に於いて特別な振る舞いをする
通常の関数と違い継承関係を舐めるように呼ぶので純粋仮想でも実体が必要
2
さあ?
3
文法的にアカンからじゃね?わからん
4
1の答えにがこれだったかもしれぬ
ちなみに、(デストラクタでない)純粋仮想関数でも実体を持つことは可能
0823デフォルトの名無しさん
2013/06/10(月) 00:05:54.45他に純粋仮想関数がないインターフェイスでもインターフェイスを明示できるから使ったらいいんじゃね?
3
オーバーライドの文法的にNG
か?
0824デフォルトの名無しさん
2013/06/10(月) 00:15:36.300825デフォルトの名無しさん
2013/06/10(月) 00:52:45.360826デフォルトの名無しさん
2013/06/10(月) 00:54:39.20意味的におかしいって指摘に対して使ったらいいんじゃねとは
何言ってんだこのばかは
>オーバーライドの文法的にNG
オーバーライド?
function-definitionとmember-declaratorが排他的だからだろ
何言ってんだこのばかは
0827デフォルトの名無しさん
2013/06/10(月) 00:58:38.320828デフォルトの名無しさん
2013/06/10(月) 01:00:13.762
他に純粋仮想関数がないインターフェイスでもインターフェイスを明示したいとうC++ユーザーの要望に答えたんじゃね?
か
0829デフォルトの名無しさん
2013/06/10(月) 01:04:19.24インターフェースであることを明示
という発想がおかしい
さてはJAVAドカタだな
0830デフォルトの名無しさん
2013/06/10(月) 01:18:23.35そうですね。規格策定の委員会メンバーはお疲れだったのでしょう。
>問題2 実体が必要ならそもそも=0禁止にするのが筋じゃね?
そうねすね。それが一番いいと思います。
>問題3 virtual ~unko()=0{}がダメなのは何故?
=0という珍妙な文法を考えた委員会のレベルを察して下さい。
>問題4 何で実体が必要なの?
>>822の通りです。
0831デフォルトの名無しさん
2013/06/10(月) 01:36:06.81珍妙ではあるけど関数のアドレスがNULL(0)であるって理由づけするとそこまで変でも…いや変か?
0832デフォルトの名無しさん
2013/06/10(月) 01:41:17.42のなら virtual ~unko()=0{}
これを認めるよう構文を見直すか
デストラクタに限り=0は{}と同等
とすべきだと思うのだけれど
>>831
関数ポインターじゃなくて関数が
ゼロとはこれ如何に
0833デフォルトの名無しさん
2013/06/10(月) 01:45:20.04無意味って訳じゃない
0834デフォルトの名無しさん
2013/06/10(月) 01:51:13.10だけでなく、
「このクラスはインスタンスを作れない」って
別の意味でも使われているからこうなる。
class D = 0 : public B {};
こうすればよかった。
0835デフォルトの名無しさん
2013/06/10(月) 07:08:09.720836デフォルトの名無しさん
2013/06/10(月) 07:40:36.740837デフォルトの名無しさん
2013/06/10(月) 09:55:56.120838デフォルトの名無しさん
2013/06/10(月) 12:52:39.19ハゲはもうすっこんでろ
0839デフォルトの名無しさん
2013/06/10(月) 14:37:23.96virtual でない = 0 とか、デフォで virtual になるクラスでも計画しているならともかく
0840デフォルトの名無しさん
2013/06/10(月) 16:49:41.69追加したんだから同時にabstractも
追加すべきだった
0841デフォルトの名無しさん
2013/06/10(月) 19:52:46.08[[abstract]] ←これ★
struct ConcreteUnko final : BaseUnko {
[[abstract]] ←これ★
[[noreturn]]
inline virtual auto mf() const volatile && throw() -> void final override {
}
};
0842デフォルトの名無しさん
2013/06/10(月) 19:57:16.79いいかもね
ついでにデフォがprivate継承ってのも廃止で
//private継承マジ死ねアホカス
0843デフォルトの名無しさん
2013/06/10(月) 20:11:16.890844デフォルトの名無しさん
2013/06/10(月) 20:13:21.52そこでJAVAのアノテーション地獄の再来です
>>842
メンバーをprivateってのは普通だけど、
親クラスをprivateってのは普通の使い方
じゃないよね まったく
>>843
デフォルトをpublicって話でしょ
0845デフォルトの名無しさん
2013/06/10(月) 20:16:00.840846デフォルトの名無しさん
2013/06/10(月) 20:27:56.14新しい宣言にするしかないだろうね。
キーワードの追加は難しいだろうから
使い回しでこんな感じ。
explicit class D : B, private noncopyable {
int private_mem;
public:
D() : private_mem() {}
};
0847デフォルトの名無しさん
2013/06/10(月) 20:36:44.54void operator=(kuso const &) = delete;
でいいじゃない
0848デフォルトの名無しさん
2013/06/10(月) 20:40:18.06使いまくってやるわw
超便利なんだなこれがw
0849デフォルトの名無しさん
2013/06/10(月) 20:50:09.350850デフォルトの名無しさん
2013/06/10(月) 20:52:18.13意味的に最悪だね。
private継承を使う人は正直
頭からウジが湧いてるんじゃないかと思う
0851デフォルトの名無しさん
2013/06/10(月) 21:04:09.01細かいことだけどJAVA厨のオブジェクト指向は
一般のオブジェクト指向と意味が違うよ
教義は
・インターフェースこそオブジェクト指向
・つまりJavaが最高のオブジェクト指向
・デザパタ名の連呼で会話しようぜ
・C++とかスモールトークは
インターフェースが無いから偽物
0852デフォルトの名無しさん
2013/06/10(月) 21:10:42.140853デフォルトの名無しさん
2013/06/10(月) 21:11:39.59仮想デストラクタでないクラスを拡張したい時に
private継承してpublicでusingしまくるという手は使える
例えばSTLのクラステンプレートを拡張するとか
0854デフォルトの名無しさん
2013/06/10(月) 21:14:17.860855デフォルトの名無しさん
2013/06/10(月) 21:17:37.94は型なしに近い使用感を目指してるというか、上手く言えてないがそんな感じな感じがする感じ。
っていうか、テンプレート書く側の人と使う側の人の間に隔たりが出来てるというか出来つつあるというか・・・・・・
0856デフォルトの名無しさん
2013/06/10(月) 21:26:27.520857デフォルトの名無しさん
2013/06/10(月) 21:32:44.780858デフォルトの名無しさん
2013/06/10(月) 21:36:31.84sacalaなら、Dならと色々出てくるがKUSOは生まれ続ける
言語の数だけ生まれてくる
0859デフォルトの名無しさん
2013/06/10(月) 21:48:57.67void operator delete(void*, size_t)って
何のためにあるのでしょうか?
operator new(size_t)に対応するのが
void operator delete(void*)
void operator delete(void*, size_t)
の両方っていうのがさっぱりわからんとです
0860デフォルトの名無しさん
2013/06/10(月) 21:53:49.09C++はオナニー専用言語
実務につかっちゃダメ
他人のオナニーなんか
見たくないだろう?
0861デフォルトの名無しさん
2013/06/10(月) 21:55:01.06アロケータを自分でマネージするための大人の都合ですQZがよくやってるね
0862デフォルトの名無しさん
2013/06/10(月) 21:56:26.750863デフォルトの名無しさん
2013/06/10(月) 22:00:15.10void operator delete(void*)
→OK
operator new(size_t, X, Y)
void operator delete(void*, X, Y)
→OK
operator new(size_t)
void operator delete(void*, size_t)
→OK ???
operator new(size_t, size_t)
void operator delete(void*, size_t)
→oops!
こんな糞言語仕様考えた奴は死んだ方がいい
0865デフォルトの名無しさん
2013/06/10(月) 22:10:55.27二番目の引数は、何が渡されるん?
0866デフォルトの名無しさん
2013/06/10(月) 22:30:52.06=0文法を最初に考え付いて実装した上に
あまつさえ販売したのばボーランドの連中だったはず
中○正○郎は気の利いた文法じゃーんみたいなことを確か言っていたが
0867デフォルトの名無しさん
2013/06/10(月) 22:46:02.89=fuck みたいのも考えていたようで
auto配列の初期化みたいなKuSo600tツァーリボンバはともかく
0868デフォルトの名無しさん
2013/06/10(月) 22:52:35.23ボーランドのせいにするようです
>>863もどこぞのベンダーの糞仕様なのでしょう
0869デフォルトの名無しさん
2013/06/12(水) 19:54:41.35と
fuckだぜ
は雲泥の差がある
0870デフォルトの名無しさん
2013/06/12(水) 20:08:12.19Dは失敗事例として諦めよう
0871デフォルトの名無しさん
2013/06/12(水) 20:21:03.390872デフォルトの名無しさん
2013/06/12(水) 20:30:40.910873デフォルトの名無しさん
2013/06/12(水) 20:40:29.34生newは目をつぶってもいい
多重継承は諸説あるが俺は現状でよいと思う
0874デフォルトの名無しさん
2013/06/12(水) 21:34:16.240875デフォルトの名無しさん
2013/06/12(水) 21:35:21.96パフォーマンスという言葉を知らないのか?それとも処理が終わるまで何時間でも待てる
時間的余裕があるのか?
0876デフォルトの名無しさん
2013/06/12(水) 21:58:44.08時間あるよ
土地、家、十分な金が遺産で手に入ったから暇なんだ
0877デフォルトの名無しさん
2013/06/12(水) 22:01:57.580878デフォルトの名無しさん
2013/06/12(水) 22:43:44.150879デフォルトの名無しさん
2013/06/12(水) 22:44:15.480880デフォルトの名無しさん
2013/06/12(水) 23:12:13.79それはもう限りなく愛に近い憎しみというかw
0881デフォルトの名無しさん
2013/06/12(水) 23:14:25.670882デフォルトの名無しさん
2013/06/12(水) 23:33:58.63お前、ちゃんと外出てるか?人間と会話してるのか?
0883デフォルトの名無しさん
2013/06/12(水) 23:38:58.15あれすごいいいと思うのに、後発の言語も取り入れないな
0884デフォルトの名無しさん
2013/06/12(水) 23:43:11.43おまえ、ちゃんと C++ で発話しているか? マシンと話しているか?
人語には幻想修飾あるいは期待値参照とでも言うべき面倒なものが多くて混乱するのはわかるが
0885デフォルトの名無しさん
2013/06/13(木) 00:29:18.260886デフォルトの名無しさん
2013/06/13(木) 00:31:09.450887デフォルトの名無しさん
2013/06/13(木) 00:50:46.51例外の何が気に入らないのか聞かせてもらおうか。
0888デフォルトの名無しさん
2013/06/13(木) 01:25:23.68なんだこれ?変に気持ちいいぞw
まあ他人の書いたテンプレートバリバリなコードは相変わらず読めないけどw
0889デフォルトの名無しさん
2013/06/13(木) 06:36:53.45これあったらC++別にいらないし
Cで十分だな
0890デフォルトの名無しさん
2013/06/13(木) 06:43:24.89自作ライブラリを活用する機会がそんなにあるかと言われるとそうでもない
0891デフォルトの名無しさん
2013/06/13(木) 07:08:28.25JavascriptとかPHPとか動的プログラムでは標準的。
0892デフォルトの名無しさん
2013/06/13(木) 07:29:50.22PL/1 は、プリプロセッサで if 文どころか for 文やサブルーチンまで使えたので、無茶苦茶凝れたのもいい思い出だ (w
0893デフォルトの名無しさん
2013/06/13(木) 07:37:42.14構造化マクロを次の仕様に入れようぜ
void f() {
#define N 100
#begin
#define N 200
myputint(N); // 200
#end
myputint(N); // 100
}
0894デフォルトの名無しさん
2013/06/13(木) 10:22:21.92なぜ我々は配列の長さを整数型に保存して使用しなければならないのですか?
0895デフォルトの名無しさん
2013/06/13(木) 10:32:18.100896デフォルトの名無しさん
2013/06/13(木) 11:56:26.70嫌いなところが多すぎるから、ああ言ったんだが
たとえばRTTIがもれなく付いてくることとか
0897デフォルトの名無しさん
2013/06/13(木) 12:39:46.69vectorはクラス内部にsizeを保存して無いとでも?
0898デフォルトの名無しさん
2013/06/13(木) 13:34:01.530899デフォルトの名無しさん
2013/06/13(木) 13:40:43.31delete[]が出来るとおもうのがごく普通の考え方とおもうんですけど、
我々がそのサイズにアクセスできれば各自でサイズを保存するような
二度手間は必要なくなるとおもうんですけど・・・
0900デフォルトの名無しさん
2013/06/13(木) 13:45:16.47delete[]が必要とし、どこかから取得している情報は「配列のサイズ」じゃないからだよ
もっとも、デストラクタを実行する回数とか見てるとアホかと思うことはあるけどね
0901デフォルトの名無しさん
2013/06/13(木) 14:30:13.59ヒープのサイズを記憶してるのはOS
ヒープブロック全体のサイズを知りたいならOSに問い合わせればいい
0902デフォルトの名無しさん
2013/06/13(木) 14:43:02.77なぜ実装しないのか、そこが知りたいと思うのは私だけだろうか・・・
0903デフォルトの名無しさん
2013/06/13(木) 14:51:27.79ある領域を解放したり、サイズを取得したりする方法は、アロケータの実装次第なわけで、
でもポインタからは、その領域を確保したのがnewなのか、mallocなのか、OSのネイティブAPIなのか、ユーザー定義のアロケータか、はたまたスタック領域のポインタなのか区別できない。
確保と解放については常に1セットで使え(mallocとfree、newとdelete)という運用で
この問題を解決しているわけだけど、サイズ取得関数にそれと同じことを要求するのは難しい。
それとも何とかしてポインタからアロケータを判別して、よきに計らえるようにするか?
ポインタは領域の「先頭」以外の任意の場所を指すことができるから、前後のデータからアロケータを判別することはできない。あくまでアドレスしか手がかりはない。
方法としては、アロケータが管理している領域をアドレスで検索かけて、ヒットしたらそのポインタはそのアロケータで確保されたものとみなして適切なサイズ取得関数を呼ぶということになるんじゃないだろうか。
コストが鬼のようにかかると思うけどな。
まぁ、今書いたことは全部オレの妄想だけどね
0904デフォルトの名無しさん
2013/06/13(木) 14:54:19.92をそれぞれ用意し、適切に使い分けるのはプログラマの責任、でいいんじゃね
0905デフォルトの名無しさん
2013/06/13(木) 15:41:45.69アホ過ぎてヨダレ垂れたわ
0906デフォルトの名無しさん
2013/06/13(木) 15:44:41.30そんなアホなもん作って誰か喜ぶとは思えないし
0907デフォルトの名無しさん
2013/06/13(木) 15:50:18.17コンパイラーは知らないんだから
ヒープサイズをOSに訊くとかあり得ん。
operator [] deleteの前に適切な回数だけ
デストラクターを呼ぶのを実現するには
newの返したアドレスを一覧管理してるか、
必用より多めなサイズをoperator newに要求
して管理情報を隠し持たせるしかないんじゃないの
0908デフォルトの名無しさん
2013/06/13(木) 16:02:37.630909デフォルトの名無しさん
2013/06/13(木) 16:47:10.14>アロケータが管理している領域をアドレスで検索かけて
取得したメモリを分割して提供するアロケータとかあるから入れ子も考慮せにゃならんし、
あらかじめすべてのアロケータをサイズ取得関数に教えて置く必要もある。
…ダルいなぁ、これ。
0910デフォルトの名無しさん
2013/06/13(木) 16:55:19.91区別がついているのが>>899と>>907だけ
0911デフォルトの名無しさん
2013/06/13(木) 16:58:48.290912デフォルトの名無しさん
2013/06/13(木) 17:08:18.63で?
0913KUSO KOTE
2013/06/13(木) 19:14:16.16delete[]式がoperator delete[]を呼ぶ前に
適切な個数のデストラクターを呼び出すのは、
先頭要素の直前で配列要素数を覚えているから。
5.3.4p12
new T[5] results in a call of operator new[](sizeof(T)*5+x), and
Here, x and y are non-negative unspecified values representing array allocation overhead; the result of the
new-expression will be offset by this amount from the value returned by operator new[]
それを取得する機能が言語仕様に無いのが
何故かと訊かれると、それはわりませぬ。。
0914デフォルトの名無しさん
2013/06/13(木) 19:31:24.35配列 new の普通の実装では
配列の要素数を格納する領域を余分に確保して
その次の領域を返すんだよ。
ただし、デストラクタを呼ぶ必要のある型だけだけどな。
そういう実装である場合の動作例を挙げるとだな、
例えばデストラクタを持つクラス A の配列を new する事を考える
sizeof(A) が 8 とすると、new A[10] とすると 一見 80 バイトの領域を確保すると思われるんだが、
実は 88 バイトの領域が確保される。
その先頭 8 バイトに要素数である 10 を入れて、
残り 80 バイトの先頭のアドレスを new A[10] は返す。
delete[] では渡されたポインタの前にある要素数を取得して、
その数だけ逆順ループしてデストラクタを呼ぶ。
C++ の規格ではこの実装を行えるように、
配列 new を行った際に new の引数に渡される確保するメモリサイズは
sizeof(A) * 要素数でなく、更に +α があっても良いとしている。
operator new/delete をオーバーロードしてみると
こういう動きになっているのが分かるはずだ。
operator new に渡されるサイズは +α されてるし、
operator new が返すアドレスと new A[10] が返すアドレスにはズレがあるし、
operator delete に渡されるアドレスは operator new が返すアドレスに一致し、
delete[] に渡したアドレスとはズレがある。
要するに要素数を云々する部分は operator new/delete の外で行われ、
operator new/delete はただ言われたサイズでメモリを確保し、
渡されてきたメモリを開放すれば良い。
0915デフォルトの名無しさん
2013/06/13(木) 19:34:06.68偉そうに
0916デフォルトの名無しさん
2013/06/13(木) 19:35:00.12デストラクタが無い場合は、通常要素数は保存されない
保存しても意味が無いから。
new[] は確実に要素数を保存するわけじゃないから、
要素数を確実に取得する手段は存在しない。
だから自分で覚えておく必要がある。
0917デフォルトの名無しさん
2013/06/13(木) 19:36:21.92偉そうに
0918デフォルトの名無しさん
2013/06/13(木) 19:40:25.84偉そうに
0919デフォルトの名無しさん
2013/06/13(木) 19:47:06.94>要素数を確実に取得する手段は存在しない
なるほど勉強になった。ご苦労。
0920デフォルトの名無しさん
2013/06/13(木) 19:50:43.08>何故かと訊かれると、それはわりませぬ。。
なんてクソな事言ってるレスなんざ知らねえよ!
0921デフォルトの名無しさん
2013/06/13(木) 20:03:27.230922デフォルトの名無しさん
2013/06/13(木) 20:05:13.270923デフォルトの名無しさん
2013/06/13(木) 20:08:05.580924デフォルトの名無しさん
2013/06/13(木) 21:03:18.21暇人とよんでやろう
0925デフォルトの名無しさん
2013/06/13(木) 23:31:37.32時差レスの可能性も考慮できない脳味噌ならプログラミングなんてすべきじゃねーな、と横で見てて思った。
0926デフォルトの名無しさん
2013/06/13(木) 23:34:21.310927デフォルトの名無しさん
2013/06/13(木) 23:57:13.500928デフォルトの名無しさん
2013/06/14(金) 00:18:25.57おまえ何とか餃子の糞コテだろ?
1yスレから出てこないでください
いつも長文がうっとおしいです
0929デフォルトの名無しさん
2013/06/14(金) 00:31:06.71今日の晩飯は餃子食うか
おすすめの餃子屋ある?
できればテイクアウトできるところがいいがイートインオンリーの店でも可能
0930デフォルトの名無しさん
2013/06/14(金) 00:35:34.65何で QZ でなく敢えて餃子と言ったのかは
知らんが、スルーしろやカス。
0931デフォルトの名無しさん
2013/06/14(金) 07:30:41.97俺はコテじゃないぞ
0933デフォルトの名無しさん
2013/06/14(金) 23:44:46.76どうみてもQZの文体でした
0934デフォルトの名無しさん
2013/06/15(土) 01:58:28.85達人プログラマが無駄を削ぎ落としたコードでメモリを直接見たり触ったり管理するというのがCの文化やがな
配列長を管理してくれるしくみが固定長/可変長をとわずのべつまくなく配列につくとか
そーいうセンスからすると余計な機能やがな
0935デフォルトの名無しさん
2013/06/15(土) 02:03:31.270936デフォルトの名無しさん
2013/06/15(土) 05:54:08.01D&E読めや
最初はC++でも個数を言語側で覚えておかずに delete[10] p; という風に
解放時にプログラマが個数を指定するようになっていた
しかしあまりにもエラーが多すぎるのであんたの言葉で言うと「Cの精神に反する」
かも知れないが個数を覚えておく形式に変わった
歴史を見て物を言えや
0937デフォルトの名無しさん
2013/06/15(土) 06:13:02.830938デフォルトの名無しさん
2013/06/15(土) 06:19:18.02それであんな文法なのか。
にしても、サイズを覚える仕様を配列時のみに限定する辺り、
Cの精神が完全に無視されたというわけでもなかったりするんかな。
…ってCのfreeも(配列長ではないがメモリサイズを)覚えとるやん!
Cの精神云々関係なく実装コストとミス対策がせめぎ合ってきた歴史、
と解釈することもできちゃうかもなぁ…
0939デフォルトの名無しさん
2013/06/15(土) 08:35:05.61自前で覚えるのと比べりゃゼロオーバーヘッドだから問題ないだろ
0940デフォルトの名無しさん
2013/06/15(土) 08:52:53.75うぜー言語にデストラクタを導入したから自滅した、というだけであって
そのエピソードはCの文化云々とは関係ないだろ;
>>938
典型的なmalloc()/free()の実装ならメモリブロックのサイズ/sizeof(T)でTの配列の要素数がわかる
が、malloc()の実装方法の詳細まで規格で決まっているわけではないから
環境によってはdelete[]の導入のせいで空間的コストを追加で支払わされるケースがあるのかも試練、
0941デフォルトの名無しさん
2013/06/15(土) 08:58:55.38適材適所でやればいいよ。
0942デフォルトの名無しさん
2013/06/15(土) 09:04:57.50mallocって指定した以上のメモリを確保する実装でも別にいいんじゃねーの
メモリブロックのサイズから要素数求められんの?
0943デフォルトの名無しさん
2013/06/15(土) 09:12:04.33知らん普通はメモリ使用効率をとり、
malloc()で指定したサイズ=確保されたメモリブロックのサイズ(管理用のヘッダは除く)
のはず
マルチコアのシステムだとメモリブロックがキャッシュラインサイズ(128 Byteとか)の境界に整列していた方が
良いかもしれん(実際_aligned_malloc()みたいなものもある)んおでそう単純にも遺憾かも試練、
0944デフォルトの名無しさん
2013/06/15(土) 09:49:12.12特定の境界にアラインされてないと char 配列以外で
パフォーマンス落ちたりCPUによっては例外出たりするから
メモリブロックを特定のバイト数単位で管理しているはずだと思う
0945デフォルトの名無しさん
2013/06/15(土) 12:04:18.15実際に必用なサイズを記憶する必用は発生することがある。
長さを覚えるための領域のサイズは
先頭要素の前になるだろうから、
そのために必用な最小のサイズの計算は
要素のアライメントの情報を持ってる
コンパイラでないと難しんでは。
0946デフォルトの名無しさん
2013/06/15(土) 12:13:18.010947デフォルトの名無しさん
2013/06/15(土) 12:48:41.94ああ忘れてたわスマン
>>945
別に
そのシステムで整列に関して最も制限の強い型のサイズ(sizeof(double) == 8 Byte)とか)
の境界に整列させときさえすれば、整列に関しては無問題、
これはmalloc()を使うユーザープログラムのコンパイル時ではなくて、
malloc()のコンパイル時に決定できる
詳しくはK&R参照
キャッシュラインサイズで整列させないとまずいというのはパフォーマンスに関わる話
0948デフォルトの名無しさん
2013/06/15(土) 12:52:50.430949デフォルトの名無しさん
2013/06/15(土) 13:17:59.39>8 Byte)とか)の境界に整列させときさえすれば、整列に関しては無問題
4バイトですむ所も一律に8バイトに
すればokとかバカですか?
0950デフォルトの名無しさん
2013/06/15(土) 13:23:52.70mallocは何の型として使われるか分からないから
最大に合わせないとだめなんだぞ
operator new も同じ
0951デフォルトの名無しさん
2013/06/15(土) 13:38:30.92藻前は話を理解していない
>>950
だから、(環境によるが、典型的には)doubleで整列させとけばでおk
どんなサイズの構造体を作っても、開始アドレスを(環境によるが、例えば)8の倍数にしておけば
整列に関する問題は生じない
0952デフォルトの名無しさん
2013/06/15(土) 14:02:23.400953デフォルトの名無しさん
2013/06/15(土) 14:06:28.53そういうレアケース(SIMD絡み)には_aligned_malloc()を使う
8バイトで済むところを毎回128バイト使っていると、>949に刺されっぞ
0954デフォルトの名無しさん
2013/06/15(土) 14:14:58.840955デフォルトの名無しさん
2013/06/15(土) 17:59:47.500956デフォルトの名無しさん
2013/06/15(土) 18:23:46.460957デフォルトの名無しさん
2013/06/15(土) 18:41:48.170958デフォルトの名無しさん
2013/06/15(土) 18:42:18.46○浮動
0959デフォルトの名無しさん
2013/06/15(土) 18:54:03.180960デフォルトの名無しさん
2013/06/15(土) 18:56:33.320961デフォルトの名無しさん
2013/06/15(土) 19:03:12.31アナログの方が精度が悪そうというのも
0962デフォルトの名無しさん
2013/06/15(土) 19:15:04.74アナログならオペアンプが腐るほど存在する
0963デフォルトの名無しさん
2013/06/15(土) 19:35:16.400964デフォルトの名無しさん
2013/06/15(土) 19:48:27.95やりたいことにも依るけど
8バイト無いと精度が足りなくて
困ることは希によくある
0965デフォルトの名無しさん
2013/06/15(土) 19:49:17.230966デフォルトの名無しさん
2013/06/15(土) 19:55:33.48あんなに有効精度が小さい型なんてマジ勘弁w
0967デフォルトの名無しさん
2013/06/15(土) 20:03:54.520968デフォルトの名無しさん
2013/06/15(土) 20:07:03.810969デフォルトの名無しさん
2013/06/15(土) 20:09:14.01電子式アナログコンピュータというものがあってだな…
現在でもアナログとデジタルの境界部分ではアナログコンピュータ的な処理も無いこたない
精度についてだがPCMオーディオで知っての通り、
民生品で固定桁24bit超えてくるからIEEE754の32bit floatでは有効桁が余裕で足りない。
0970デフォルトの名無しさん
2013/06/15(土) 20:39:18.77数値をアナログで表現して、アナログのまま計算するって事だよ
アナログなら無理数も表せるという、そういう意味
0971デフォルトの名無しさん
2013/06/15(土) 20:45:51.77円周率や自然対数の底をアナログで欲しいのか?
それで1兆桁だか340澗桁だかの精度が欲しいのか?
ちなみに観測可能な宇宙に素粒子はおよそ何個有るか知ってるか?
たとえば 0.1 なら ratio<1,10> のような分数表現で誤差は避けられるが
0972デフォルトの名無しさん
2013/06/15(土) 20:47:21.54ピコメートルとかフェムト秒とか、ほんと勘弁してください
0973デフォルトの名無しさん
2013/06/15(土) 20:48:21.48でも、アナログでやろうが誤差は入るんだろうし
そうなるとあまり意味は無いのかな
0974デフォルトの名無しさん
2013/06/15(土) 21:06:00.870975デフォルトの名無しさん
2013/06/15(土) 21:11:16.48足し算引き算はともかく、他は難しそう
0976デフォルトの名無しさん
2013/06/15(土) 21:35:53.83乗算回路とか積分回路とかとかいうのがあってだな……
0977デフォルトの名無しさん
2013/06/15(土) 21:44:17.810978デフォルトの名無しさん
2013/06/15(土) 21:51:30.15おもしろいな
ハードの話はよく知らないから興味深い
0979デフォルトの名無しさん
2013/06/15(土) 22:09:34.27低脳なお前の話は聞いてない
0980デフォルトの名無しさん
2013/06/15(土) 22:30:12.37あ、スレ違いだから要らないです
0981デフォルトの名無しさん
2013/06/15(土) 22:31:35.02お前そのものがスレ違い
0982デフォルトの名無しさん
2013/06/15(土) 22:31:57.360983デフォルトの名無しさん
2013/06/15(土) 22:32:54.47物理シミュレーションをオペアンプで実行できるかどうか、だ
特に、多体問題を解決してくれるとなお良い
0984デフォルトの名無しさん
2013/06/15(土) 22:34:10.48あ、スレ違いと基地外は要らないです
0985デフォルトの名無しさん
2013/06/15(土) 22:34:50.990986デフォルトの名無しさん
2013/06/15(土) 22:42:34.76出来るよ
多粒子系を利用した多粒子系計算システムを組めばよい
0987デフォルトの名無しさん
2013/06/15(土) 22:47:50.18あ、そういうのも要らないです
スレ違いの分際で開き直るとか
サイテーですね
0988デフォルトの名無しさん
2013/06/15(土) 22:50:59.33実例とかあるかな
0989デフォルトの名無しさん
2013/06/15(土) 22:58:49.43続けんなよカス。
0990デフォルトの名無しさん
2013/06/15(土) 23:13:03.980991デフォルトの名無しさん
2013/06/15(土) 23:13:32.700992デフォルトの名無しさん
2013/06/15(土) 23:15:22.30ほい
C++相談室 part103
http://toro.2ch.net/test/read.cgi/tech/1371305675/
0993デフォルトの名無しさん
2013/06/15(土) 23:17:12.68乙
0994デフォルトの名無しさん
2013/06/15(土) 23:18:58.610995デフォルトの名無しさん
2013/06/15(土) 23:19:28.78明らかになります
0996デフォルトの名無しさん
2013/06/15(土) 23:28:16.070997デフォルトの名無しさん
2013/06/15(土) 23:37:20.220998デフォルトの名無しさん
2013/06/15(土) 23:42:05.910999デフォルトの名無しさん
2013/06/15(土) 23:46:22.79基地外は去れ
1000デフォルトの名無しさん
2013/06/15(土) 23:46:51.6010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。