C++相談室 part9
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNG(´∀`).。o(関連URLは>>2-5の辺り)
0809デフォルトの名無しさん
NGNG> だから、mapとしての機能は、もともと全部使いたいんですよ。
例が悪い、というか 798 と言ってることが違う。ころころ要求仕様を変えて
逆ギレしないように。
C 言語での配列の初期化
void (*func_table)[] = { &foo, &bar, &woo };
みたいに、定義と初期化をまとめたいっつー話なのね?
0810デフォルトの名無しさん
NGNGnew してないものを delete する奴は、別問題だと考えて、ここでは new 出来なくするくらいでいいんじゃなかろうか。
new してないものを delete する・・・例えば
void foo(int*p){
delete p;
}
void bar(){
int i = 1;
foo(&i);
}
こんな事する奴は、そもそも防ぎようがない。諦めれ。
0811デフォルトの名無しさん
NGNG0812730
NGNGああ、失礼。要するに、STLのコンテナとしての機能は、
何ひとつ損ないたくない、ってことを言いたいんでして。
で、そうです。定義と初期化をまとめたいんです。
理想はコンパイル時に初期化が済んでるといいんですけどね。
それはさすがに無理っぽいです。
>>810
ですね。VCでちょっと実験してみましたけど、派生クラス側でoperator deleteを
禁止しても、呼び出されるdeleteは基底クラス側だから、>>810的な
コードを書かれたら防ぎようがないんですね。まいった……。
>>811
いや、どうでもよくはないんです。>>759以降、レスがもらえないから
話が出来ないだけでして。
0813デフォルトの名無しさん
NGNG違うネタをふったのはあんただよ
0814デフォルトの名無しさん
NGNGちなみに、今何をつくってるんすか?
0815デフォルトの名無しさん
NGNGSTLコンテナとの
多重継承にして、
データ用のクラスでデータ管理すればいいんでない?
0816デフォルトの名無しさん
NGNG俺なら、こんな感じで書くかねぇ。
typedef void (*func_type)();
struct func_tbl {
const char *d_str;
func_type d_func;
};
typedef map<string, func_type> dispatcher;
dispatcher
dispatcher_creator(struct func_tbl *p)
{
dispatcher d;
for (; p->d_str != NULL; ++p)
d.insert(dispatcher::value_type(p->d_str, p->d_func));
// 重複エラーのチェックをすること
return d;
};
int
main()
{
struct func_tbl tbl[] = {
{ "foo", &foo },
{ "bar", &bar },
{ NULL, NULL },
};
dispatcher d(dispatcher_creator(tbl));
return 0;
}
0817デフォルトの名無しさん
NGNG勝手にまとめろやごるぁ。
dispatcher& funcMap()
{
static const dispatcher::value_type initial_values[] = { ... };
static dispatcher unique_instance( &initial_values[0]
, &initial_values[sizeof(initial_values)/sizeof(table_type::value_type)] );
return unique_instance;
}
0818817
NGNGs/table_type/dispatcher
0819デフォルトの名無しさん
NGNG日本語を上手く扱える文字列としてstd::wstringを使わない理由は?
0820730
NGNGゲームです。
>>815-818
興味深いアイデア、いろいろありがとうございます。でも、>>800より
言いかと考えると、どれも微妙ですね。
>>819
ああ! そういや、そんなのがあるってのをなんかで見たような……。
ちょっとぐぐってみました。えーと。マルチバイト文字をstringで
読み込んで、標準関数(?)の mbstowcs()でwstringに
入れてしまえば、全部の文字が2バイト単位で扱える。で、テキスト
出力したいときはwcstombs()でマルチバイト文字でstringに戻せる。
……でいいんでしょうか。Webじゃあんまりいい情報が見つからないんで、
なにかお勧めの書籍があったら教えてください。
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG> でも、>>800より言いかと考えると、どれも微妙ですね。
変数定義と初期化をまとめたいって話なら、おれは 817 か 818 だと思うがね。
800 だと初期化に使う内容が、変数の定義部分と離れてしまう。
逆に、多くの箇所で同一の値で初期化された map を利用するのなら 800 だ
ろう。
(相変わらず要求仕様が曖昧なんで、どっちが良いのか良く分からんが)
0823デフォルトの名無しさん
NGNGのような文字列を\nで分割したいのですが、
C風でなくC++風に分割するにはどうすればよいのでしょうか?
例えばstr1にabcd、str2にefgh、str3にijklのようなイメージです。
findで\nを探してsubstrで取り出すという方法を考えたのですが、
より良い方法はあるのでしょうか・
0824コギャルとHな出会い
NGNG朝までから騒ぎ!!
小中高生
コギャル〜熟女まで
メル友
i/j/PC/対応
女性の子もたくさん来てね
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。
0825デフォルトの名無しさん
NGNGstrtok
0826デフォルトの名無しさん
NGNGboost::regexかboost::tokenizerを使うのが簡単だけども
標準ライブラリではないな
0827デフォルトの名無しさん
NGNGありがとうございます。
stringのままよりこちらの方が良いですか。
0828デフォルトの名無しさん
NGNGそちらが簡単ですか。
標準ライブラリ以外でも大丈夫なので
そちらも調べてみたいと思います。
ありがとうございました。
0829デフォルトの名無しさん
NGNG#include <iostream>
#include <vector>
using namespace std;
class hoge {
public:
hoge() { cout << "hoge()" << endl; }
~hoge() { cout << "~hoge()" << endl; }
};
int main() {
{
vector< hoge* > v;
for (int i = 0; i < 3; i++) v.push_back(new hoge);
for (int i = 0; i < 3; i++) v.pop_back();
}
return 0;
}
スコープを抜けてvectorが削除されるときか、さもなくば
pop_back()で要素を削除したときにhogeのデストラクタを
呼び出して欲しいのですが、うまくいきません。
何かいい方法はないでしょうか。
0830デフォルトの名無しさん
NGNGvector<hoge> を使えばいい。
0831デフォルトの名無しさん
NGNGvector<boost::shared_ptr<hoge> > もな。
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGvector<hoge>だと一時オブジェクトができるのがちょっと厭だったんです。
shared_ptrというものがあるんですか。
それを調べてみます。
どうもありがとうございました。
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG複雑なだけじゃん。
0836デフォルトの名無しさん
NGNG>vector<hoge>だと一時オブジェクトができるのがちょっと厭
*まずは* それを気にしない、メモリ管理の事は自分の責任にしない、というのが
C厨を脱する1手段である気もするけどな。
まぁ、いつまでもそれじゃ駄目なんだけどさ。
0837デフォルトの名無しさん
NGNG禿童
0838デフォルトの名無しさん
NGNGstd::string& を返す関数を書いてしまい慌ててEffectiveあたり買いにいく罠、だな。
0839デフォルトの名無しさん
NGNG> なんでC++ってポインタ(参照含む)の種類がたくさんあるんだろうね。
それが分かれば C++ 中級認定。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGもともとポインタはアドレスと型の情報しかない。メモリはCではプログラマが完全に管理するものだった。
C++でも初期のころはそうだった。後に参照ができSTLができた。
ポインタをプログラマが管理するのは苦痛である。それをSTLで簡単に管理することが可能になった。
しかしそれは無理やりに近い方法である。そのためスマートな解決策がなく結果としていろんなものが出来てしまった。
メモリの管理は簡単になったかもしれないが、反対に実装を詳しく知らないとバグを入れやすくなってしまった。
ポインタの管理を言語側にすべて任せてスマートに解決したものがGC
C++を使っている以上、メモリの管理は難しい。
0842デフォルトの名無しさん
NGNG0843842
NGNG0844デフォルトの名無しさん
NGNGStrutsなんかを見ているとGCありの言語が羨ましくなる。
0845デフォルトの名無しさん
NGNGどこだ?あるのか?
0846デフォルトの名無しさん
NGNG調べちゃったじゃないか
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG略さないで書く奴なんでイネーヨ(藁
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNG必要ないから
0852デフォルトの名無しさん
NGNGC++でGUIアプリを書かないっていうことですか?
0853デフォルトの名無しさん
NGNGその標準ライブラリで作られるGUIが、あんまりかっこわるくてさ、
俺が反対しといた。ごめんな。
0854デフォルトの名無しさん
NGNGGUIのかっこよさって実装でどうにかすればいいだけじゃないんですか?
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNGなんで設計や仕様を統一させなかったのですか?
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNG困ったもんだね。
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG> STLじゃなく
ってSTLを除くの?あれ結構頑張って作ってるよ、俺ら。
0862デフォルトの名無しさん
NGNG面白くない。
0863デフォルトの名無しさん
NGNG( '・ω・) ショボーン
(、っiョc)
゙'ー'゙ー'゙
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNGJava の socket やら GUI 周りのライブラリみたいのを想像してるんじゃないのか?
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGそれ「標準」ライブラリじゃないし、その候補でさえない……。
>>867
使ったことないんだが Common C++ Libraries とか、どう?
http://sourceforge.net/projects/cplusplus/
0870デフォルトの名無しさん
NGNGイマイチもいいとこ
0871デフォルトの名無しさん
NGNGint allnum = 0;
for(const char* i = str.c_str(); i != NULL; i++) {
if(*i == 0x0d && ++*i == 0x0a)
allnum++;
}
と書いてみたんですが、もっといい方法はありますか?
0872871
NGNGint allnum = 0;
for(const char* i = str.c_str(); i != NULL; i++) {
if(*i == 0x0d && *(++i) == 0x0a)
allnum++;
}
0873デフォルトの名無しさん
NGNGとりあえずfindつかって書いてごらんよ。
0874デフォルトの名無しさん
NGNG数を数えるなら count_if だろう。
class IsChr
{
const char ch_;
public:
IsChr(const char ch) : ch_(ch) {}
bool operator()(const char ch) const { return ch == ch_; }
};
cout << count_if(s.begin(), s.end(), IsChr('\n')) << endl;
0875デフォルトの名無しさん
NGNGint allnum = 0;
int pos = 0;
while(true) {
if((pos = s.find("\n", pos)) == std::string::npos)
break;
allnum++;
}
0876871,872,875
NGNGcountで最初やろうとしていたんですがcount_ifですか。
これから調べてみたいと思います
0878デフォルトの名無しさん
NGNG0879878
NGNG0880デフォルトの名無しさん
NGNGcountでOKでしたか。最初やったらエラーが出でて・・・
ありがとうございます。
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG英語で書いてください。
0886デフォルトの名無しさん
NGNGクラス方法およびアルゴリズムとのどの関係がそこにありますか。知らせてください。
>>865
それはここで日本の掲示板ではありませんか。
私は、日本語を流暢に話すことができるので、満足であると思います。
0887デフォルトの名無しさん
NGNGなんて書いてあるか理解できません。
0888デフォルトの名無しさん
NGNG日本人で地でやっているとしたら天才。
多分一度英語に機械翻訳してからまた日本語に戻しているのだろうが。
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGどうする>>888でばれたぞ。
0894デフォルトの名無しさん
NGNGあなたの作成したかもしれない翻訳エンジンは、どちらかと言うと改良するための
必要が存在すると思うかもしれません。
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNGいや盆休みで暇なんでちょうどいい暇潰しにと思って。
0898デフォルトの名無しさん
NGNGhikky! >>>>>> Rubyist
0899デフォルトの名無しさん
NGNGしない、1レベルがより高く来られる場合、1つ、この掲示板?容易なものは単に聞かれます。
それは理解します(そのようなもの)?排泄物BAKA--それは死ぬことができます(よ答え)それは糞です、何、容易なもの糞。
それは、ものが何を使用しなければならないか尋ねています、どのように、クラス方法として。
0900デフォルトの名無しさん
NGNGpublic: void hang_up()
{
||
||
|| yesterday...
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
}
};
0901デフォルトの名無しさん
NGNGCan't an answer be obtained yet?
the case where bend and one level comes more highly
-- one and this bulletin board --
it is only asked to an easy thing It is the ?
excrement BAKA to understand (such a thing).
-- It (よ答え) from which it can die is what and
the easy thing excrement which are excrement.
It is as the class method to how that is asking
what a thing must use.
0902デフォルトの名無しさん
NGNGそれは、オブジェクト指向のスクリプト言語として他のスクリプト言語を圧倒する実行および美しい言語明細を行っています。
例えば、スキーム、SmallTalkなどが比較的美しい言語であると言われていますが、ルビーは遅れる優位によって一層の美および一層の現実性を装備しています。
もちろん、Perl、ピュートーンなどは問題外です。
日本語との類似性では、選択が単にルビーを持つでしょう。
ルビーのLinuxの分配の採用の例は増加していました。
分配はすべて、1年後に、ルビーの標準の採用を行なうでしょう。
ルビーは将来のスクリプト言語です。
それは、長くなりましたが、KOPIPEではありません。
場合、KOPIPE[承認することができる人々は、ルビーのものを理解することができない人々に会います、そして/この発言]、それらは幸福です。
0903デフォルトの名無しさん
NGNG難しいことを暗号に利用できんか?
0904デフォルトの名無しさん
NGNG失われている。
0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGその翻訳そふとかなり完成度高そうじゃないか?
0908デフォルトの名無しさん
NGNGそれ他の言語への翻訳も間に入れて何回も繰り返してみたんだが
翻訳がおかしくなるのはある程度までなんだよな。
もちろん原文とは違うがある程度で内容の劣化が止まる。
だからなにと言われても困るが。
レス数が900を超えています。1000を超えると表示できなくなるよ。