std::vector, std::deque, std::listの場合は話はややこしくなるな。もっとも これらのコンテナにはメンバ関数にはupperboundはないが。だから 標準アルゴリズムのstd::upper_boundを適用したと仮定して、 1 2 3 4 4 4 5 6 7 となっていたとして、upperbound(4)の逆とは、 1 2 3 4 4 4 5 6 7 ^ ここを指すのか(lower_bound)、 1 2 3 4 4 4 5 6 7 ^ ここを指すのかで話が違ってくる。 連想コンテナではどちらでもよい。同一キーの順序づけがないんだから。
下みたいに{〜}の中で作成したオブジェクトは{〜}抜ける場合に必ず破棄されるの? 実装依存? printf("before); { foo b: } printf("after");
>>933 解決しました。memcpyでOKでした。レスありがdございました。
SOCKADDR sock; SOCKADDR_IN soin;
memcpy( &sock, &soin, sizeof(SOCKADDR) );
>>955 サイズが全く同じなら
SOCKADDR sock;
SOCKADDR_IN soin;
soin = *reinterpret_cast<SOCKADDR_IN *>(&sock);
で出来ないことはない。
一応参考までに。
色々ありがとうございます。 説明も悪かったみたいで、 例えばset内に 1 2 4 とある場合、引数が 5の場合4 4の場合2 3の場合2 2の場合1 1の場合エラー 0の場合エラー という処理をしたかったんです。 結局、 if (s.empty()) return false; pos = s.lower_bound(key); if (pos == s.begin()) return false; pos--; // 以降該当したものがある場合の処理 というようにしました。 みなさんありがとうございました。
958 :
デフォルトの名無しさん :02/12/29 17:50
激しく初歩的な質問ですみません。 class A{ public: A(int n); // コンストラクタ }; class B: public A{ } int main(){ B x(5); } とやったらエラーが出るんですけど、コンストラクタって継承されないんですか?
class B:public A{ public: B(int n):A(n){} };
>コンストラクタって継承されないんですか? yes
961 :
デフォルトの名無しさん :02/12/30 01:26
template<typename T>T t=0; が通る(VC)だけど、意味あるの?
>>961 ちょっと訊きたいんだけど、どうしてそういうコードを書こうと思ったの?
偶然書き間違えて、F7押したらエラーが出なかったの。
>>961 > test.cpp(10): error C2998: '<template parameter>t': テンプレート定義にはなれません。
と言われてしまったが。
961 の VC は、実はビタミン C
966 :
デフォルトの名無しさん :02/12/30 13:29
C with classes のソースとかってどこかに落ちてないでしょうか? 検索に引っかかりにくい名前なもので探せないのです。
わかりづらかったような気がするので補足です。 コンパイラ(コンバータ)のソースという意味です。
スレ違いじゃないか?
10年以上前の代物でわ・・・
そういえば、ないね リッチーのHPにはBのソースとかあるのに ストラウストラップのHPには昔話が見当たらない
スレが終了する間際なので厨房質問をさせてください。 基底 class CGorua{略}; 派生1 class CMorua : public CGorua {略} 派生2 class CHorua : public CGorua {略} 派生3 class CForua : public CGorua {略} があり、派生クラス1〜3のオブジェクトを1つずつ作成しました。 また、別のクラスとしてCAhyaがあり、オブジェクトを1つ作成しました。 派生1〜3から、CAhyaのオブジェクトを使うにはどうしたらいいのでしょうか。 グローバルでCAhya ahyahya;と宣言するのでしょうか。 どうぞよろしくおねがいします。
>>980 you should stand thread of continuing!
>>974 ありがとうございました。
やってみます。
>>968 微妙な所ですけど、汎用相談スレに書いて解答が得られるとも思えず、
専用スレを立てるのは明らかに荒らしなので、結局ここしかないんですよね。
>>969 文化的価値から知的興味+この間の C マガの特集を見て
コンバータ作りたいなぁ…なんて思ってたりして、その参考も含めてなんです。
>>970 エイプリールフールのジョークならあるのにね(あれはストラウストラップのページじゃないんですっけ?日本語訳しか読んだことないので不明かも)
>>972 サンクスコです。…でも商品ぽいですね…。さすがにお金だして買う気はしないです。ごめんなさい。
せっかくなので初心者さんの質問にも答えてみます。
>>973 質問の意図が不明です。public な部分を使うだけならどこからでも出来ますよ。
全体で唯一のインスタンスを使うならグローバル変数より Singleton と呼ばれる方法を使う方がスマートです(わからなければ検索サイトで Singleton を検索してみてください。)
アクセスコントロールの話の場合は
>>974 さんの回答の通り friend にするのが手っ取り早い方法ですが、あまり好ましくありません。
アクセスを制限する Adapter クラスを通して使うとよいかもしれません。
ってなんかデザパタの宣教師みたいな回答になっちゃったな…。
978 :
デフォルトの名無しさん :02/12/31 06:53
char size[sizeof(T)]; と、したときの領域を動的に削る方法ってあります?
冬休みだから久しぶりに覗いてみたけど、このスレはまともですね(w
>>973 >オブジェクトを使う
とあるから、単に関連を張りたいだけの気がする。
CAhyaがプログラム中で一度しか出てこないならsingleton
多数出てくるなら、派生1〜3のコンストラクタに
ahyahyaへのポインタを渡すか、関連を張る関数を用意する。
>>978 いみふめ
静的に確保した領域は動的には変更できませんよ?
多分 vector<char> が望みのものだと思うけど
980 :
デフォルトの名無しさん :02/12/31 12:41
placement newで質問です。 void* operator new(size_t size,void* buf){return buf;} template<typename T,size_t reg=1>struct TSA{ enum{num=reg}; char p[sizeof(T)*num]; T* pt; TSA(){pt=new(p)T;} }; class X{void func(){}}; /**************************************************************/ void main(void) { TSA<X> tsa; cout<<&tsa.p<<sizeof(tsa.p)<<endl; cout<<&tsa.pt<<sizeof(tsa.pt)<<endl; } となっているとき、pとptのサイズが違うんですが、これって正しいのですか? あと、アドレスも違うのですが。
> これって正しいのですか? 正しい > アドレスも違うのですが。 あたりまえ
int main() { char p[100]; char *pt; pt = p; cout<<&p<<sizeof(p)<<endl; cout<<&pt<<sizeof(pt)<<endl; } となっているとき、pとptのサイズが違うんですが、これって正しいのですか? あと、アドレスも違うのですが。
>>982 ptの「中身が」pのアドレスっていうだけだからどっちもそれで正しい
いや、俺は980の疑問をわかりやすく書き直しただけなんだが。
986 :
デフォルトの名無しさん :02/12/31 15:43
質問です。 sscanf( argv[1]+1, "%2x", &x ); ココのargv[1]+1の部分はどういった処理なんでしょうか。 argvはchar型なので文字列連結では無いとは思うのですが。。
man sscanf
そろそろ埋めるか
>>986 argv は char **型じゃないの?
あんたのプログラムがどうなってるか知らんから分からんけどなー
990!!
ところで新スレは?
992
梅
996
埋めて埋めて
998!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
とっとと埋め
999!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。