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


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

【初心者歓迎】C/C++室 Ver.48【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.47【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1200464091/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


3 名前:デフォルトの名無しさん [2008/02/05(火) 01:51:09 ]
C はもういいだろ

4 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:58:45 ]
int *p;
p=new int[3];
deleteせずに
p=new int[4];
deleteせずに
p=new int[2];
とした場合どうなりますか?

5 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 04:39:44 ]
>>4
p は最後の new int[2] で確保された配列の先頭を指す。
前2つの new で確保された配列を破棄する手段はなくなっている。

6 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 06:52:35 ]
>>5
ありがとうございます。領域の再利用も破棄もされないまま新たに確保されちゃうんですね
新たにnewするまえにdeleteを必ずつけるようにします

7 名前:デフォルトの名無しさん [2008/02/05(火) 07:05:31 ]
>>6
入門書買えやカス!

8 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:18:25 ]
>>7
うっせーカス!

9 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:20:47 ]
>>8
そうだよな! ネットの入門サイトにも載ってるよな!

10 名前:デフォルトの名無しさん [2008/02/05(火) 09:58:32 ]
vector<string> v;
として、vを
{"AAAAAA","BBBBBB","CCCCCC","DDDDDD","EEEEEE"};
という内容で初期化したいときは、push_back()とかで1つずつ代入するしかないですか?


11 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:51:55 ]
>>10
イテレータを受け取るコンストラクタを使うといい。
コンストラクタと同じ引数で assign() というメンバ関数もあるから覚えとこう。



12 名前:デフォルトの名無しさん [2008/02/05(火) 11:36:57 ]
>11
ありがとうございます。
でもやり方がわかりませんでした。もう少し教えてください。

std::string a[] = {"AAAAA", "BBBBB", "CCCCC", "DDDDD"};
std::vector<std::string> v(a);
これだと、コンパイルエラーになってしまいました。
invalid conversion from 'std::string*' to 'unsigned int'
どう書けばよいですか?


13 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 12:13:11 ]
>>12
イテレータを受け取るコンストラクタを使えってばよ。

14 名前:デフォルトの名無しさん [2008/02/05(火) 12:20:42 ]
>>13
イテレータを渡したいけど、どこにあるのかわかりません

15 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 12:28:14 ]
>>14
配列要素へのポインタはイテレータとして使える。

16 名前:デフォルトの名無しさん [2008/02/05(火) 12:34:21 ]
>>15
ありがとうございます。
std::string a[] = {"AAAAA", "BBBBB", "CCCCC", "DDDDD"};
std::vector<std::string> v(&a[0], &a[3]);
で、できました!


17 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 12:57:07 ]
それだと"DDDDD"は収容されないけどな。

18 名前:売国まるはん [2008/02/05(火) 13:11:26 ]
パチンコスレで遠隔、ホルコン、サクラ、マネーロンダリングなどについて書き込むと渋谷マルハン社員やマルハンに依頼された
ネット工作会社がスレ荒らしをしてスレが機能停止します。
↓↓工作員の荒らしのやり方↓↓
2008/01/10(木)ID:iA54nBU50
■■■■マルハン総合スレッド 9■■■■money6.2ch.net/test/read.cgi/pachij/1187021165/783-784
【宮崎県都城市】パチ事情そのAmoney6.2ch.net/test/read.cgi/pachij/1187189246/658-659
【山と川】宮崎県児湯付近PART1【自然イパーイ】money6.2ch.net/test/read.cgi/pachij/1188235164/471-472
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】money6.2ch.net/test/read.cgi/pachij/1188885488/401-410
2008/01/13(日)ID:1HLcWzUK0
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】money6.2ch.net/test/read.cgi/pachij/1188885488/461-462
■■■■マルハン総合スレッド 9■■■■money6.2ch.net/test/read.cgi/pachij/1187021165/809-810
【香川】パーラーグランドのスレ2【徳島】money6.2ch.net/test/read.cgi/pachij/1188315438/324
【延岡】宮崎県北情報PART3【日向】money6.2ch.net/test/read.cgi/pachij/1196865970/186

工作員に荒らされ機能停止したスレ
■■■■マルハン総合スレッド 9■■■■money6.2ch.net/test/read.cgi/pachij/1187021165/
【山崎】MPT渋谷パート9【シャネル】money6.2ch.net/test/read.cgi/pachij/1197771701
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】money6.2ch.net/test/read.cgi/pachij/1188885488
MPT渋谷はマルハン・パチンコ・タワー渋谷の略です。

パチンコ産業は荒らすことでレスとレスの間を空けて読む気をなくさせたり
マネーロンダリング、さくら、ホルコン、遠隔、などの風評被害を最小限に抑えようとしてる。

新スレ→○○○マルハンパチンコタワー渋谷パート10○○○
★★★★★このスレの解説★★★★★を読んでみるとよく判る。
money6.2ch.net/test/read.cgi/pachij/1201304777/52-54



19 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:29:53 ]
assign()のソースを出し渋ってる奴から使えと言われてもねー

20 名前:デフォルトの名無しさん [2008/02/05(火) 15:11:24 ]
はじめまして。今までCの学習用開発環境としてvmware上のFreeBSDでemacsを使ってきた者です。
何かと不便なのでwindows上で開発環境を整えようと思うのですが、何かお勧めのソフトはありますでしょうか?


21 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:15:20 ]
>>20
cygwin



22 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:24:55 ]
>>20
Eclipse + CDT

23 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:47:35 ]
このような構造体があるとして
struct KOUZOUTAI{
 std::vector<int> Array;
 int nNum;
 std::string str;
};

KOUZOUTAI g_Kouzoutai;

std::ofstream fout;
fout.write( (char*)(&g_Kouzoutai), sizeof( g_Kouzoutai ) );

こんな風に構造体を書き込んでおきます。

このデータを次に読み込みたい場合、
KOUZOUTAI data;
fin.read( (char*)(&data), sizeof( data ) );

こうやって読み込むと配列の部分が正常に読み込めません。
何かいい方法はありますか?

24 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:53:06 ]
>>23
ありません。つーか、そもそもそれではvectorは書き込まれていない筈です。ご愁傷様。

25 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:56:15 ]
std::vectorの中身をserialize/unserializeする関数を作成して、保存/読み込み時にその関数を経由させる。

26 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:58:56 ]
動的配列はメモリが無条件に動的になるわけじゃなく、
動的配列を実現できるようなメンバ関数でアクセスするから動的配列たりうるわけで。
エレベーターのボタンを押さずに扉こじ開けてもエレベーターには乗れないでしょ?

27 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:01:53 ]
その例えもどうかと思う。

28 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:20:39 ]
ただの配列なら書き込めますか?

29 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:21:42 ]
はい。

30 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:26:50 ]
わかりました
ありがとうございました

31 名前:デフォルトの名無しさん [2008/02/05(火) 19:03:05 ]
下記のコードはBCB6で通りません。

template<typename FunctionPtr>
struct FunctionTraits;

template<typename ResultType,class ClassT>
struct FunctionTraits<ResultType (ClassT::*)(void)>
{
typedef ClassT ClassType;
};

テンプレートの関数ポインタによる特殊化でメソッドのクラスを推測することは不可能なんでしょうか。



32 名前:デフォルトの名無しさん [2008/02/05(火) 19:35:31 ]
VCでは通ったが。

33 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:46:16 ]
>>31
部分特殊化は VC6 あたりでも対応してなかったと思う。
コンパイラが対応してないのはありうると思う。

34 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:08:26 ]
とりあえずBCB2007で通るか検証してみては

35 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:20:13 ]
最近Cを勉強し始めたのですが、とりあえずチンチロリンでも
作ってみろというようなことをいわれました。

早速やってみようと思ったのですが、何から手をつけていいのか
さっぱりです。何か良い書籍などあるでしょうか?
チンチロリンのサンプルプログラムを見てみるのも勉強になると
いわれたので、検索してみたのですがサンプルが無く困っています。

どうかよろしくお願いします。

36 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:47:25 ]
本屋に行って何冊か立ち読みしてみるか、ぐぐればいいと思うよ

37 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:58:18 ]
>チンチロリンのサンプルプログラムを見てみるのも勉強になると
>いわれたので
簡単にそんなものが見つかるのが前提のアドバイスにワロタw
でも、そういう簡単なゲームを作るのはいい練習になると思うよ。

とりあえず、今勉強に使ってる本かサイトか知らんが
その知識だけで自分で作ってみるといいよ。
多分いろいろと汚いプログラムになりはするとは思うけど、
そうやって作ってみた後にサンプルなり本なりを読むと、
どこがマズかったのかってのがよく分かっていいと思うぜ。

38 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:03:38 ]
>>36
今は、手元にある入門書とぐぐって何とかやってる状態です。
何冊か立ち読みして、よさそうなのをもう1冊買ってみようかと
思います。ありがとうございます。

>>37
簡単に見つかるものじゃないんですね・・。
なんとか形にしてみてから調べてみることにします。
ありがとうございます。

39 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:41:22 ]
VC9ですけど、
std::exceptionにうにこーど入れると文字が壊れますか?

40 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:43:58 ]
>>39
[std::exception unicode]でググって速効。
jinguru.blog86.fc2.com/blog-entry-10.html

41 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:56:32 ]
やっぱりそうですか。



42 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:59:49 ]
UTF-8なら入れられると思う。そこまでする必要があるかは別として。

43 名前:デフォルトの名無しさん [2008/02/06(水) 05:39:37 ]
コンソールアプリケーションで、ユーザにインプットをもらって処理をするコードがあります。
その時、
int a;
cin >> a;
として、入力が数字ではなかったとき、変数aにはなにも代入されず、
ユーザが行った入力はどこかのバッファに溜まってる
のでしょうか。その次の入力から動作がおかしくなります。
あと、もし上記が正しいとすると、ユーザからの入力を受け取る処理は、
とりあえずstringで受けるべきなのでしょうか?


44 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:57:57 ]
>>43
intには数字しか読込めない。今の場合、何も読込まれずに
cinにはfailbitが立つ。cin.clear()か何かでgoodbit立てない
限り次の読み込みは出来ない。stringにすべきかどうかは何を
読み込むかによる。

45 名前:デフォルトの名無しさん [2008/02/06(水) 11:34:06 ]
>>44
ありがとうございます。自分でも調べてみたのですが、

int a;
cin >> a;
入力データを使って処理する
cin.clear();
cin.ignore(numeric_limits<int>::max(),'\n');

とするとcinが元の状態に戻りました。
ここで、clear()はgoodbitを立てるものだとして、
ignore()は指定文字数分か指定した文字(上記だと'\n')が出るまで
入力値をバッファから消す、という処理ですよね。

cinの入力ってこう書かないとだめなのでしょうか?
(結構面倒かも、と思った)

46 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:59:49 ]
Win32APIなんですがnewで確保した領域をWM_DESTROY:がきたときにdeleteしたら
コンパイル時はエラーでないけど、実行してnewで確保した後プログラムを終了
(WM_DESTROYが送られる)したらエラーがでるんですが、何故ですか?
WM_CLOSEでならdeleteしてもエラーでないんで問題は無いんですが興味本位で

47 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:16:07 ]
>>45
入力フォーマットの仕様がどうなってるのかわからないから
なんとも言えないな。任意の値が入力されるならgetlineで
一行読込んでstring解析したほうがいいかも。


48 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:21:08 ]
>>46 どうせメモリ破壊や二重解放だろ。

49 名前:デフォルトの名無しさん [2008/02/06(水) 14:18:30 ]
doubleをcoutを使って出力するときに、かならず小数点以下2桁までを
出力するようにしたいのですが、どうすればよいですか?
double amount = 3.33333;
cout << amount;
=> 3.33
どうかお願いします。


50 名前:デフォルトの名無しさん [2008/02/06(水) 14:27:18 ]
今までソフトのバイナリいじったりして満足してたんですが
これからCを始めようと思ってます。
(とりあえず、Cが基本だからやっとけ!と、どこかで見たので)

その際、アルゴリズムを先に学んだ方がいいですか?
周りに技術者がいないので、ネットで勉強する形になりますが・・。

51 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:35:04 ]
>>50
すみません
書き込む場所間違えました・・。

吊って来るんで許してください



52 名前:デフォルトの名無しさん [2008/02/06(水) 14:47:22 ]
49です。
ios::rightとかその他諸々を使って出来たみたいだったのですが、
次回必要になった時に絶対わすれてそうだったので、sprintf()を使ってやりました。
失礼しました。


53 名前:デフォルトの名無しさん [2008/02/06(水) 14:48:25 ]
stringは、値渡しですか

54 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:50:57 ]
値渡しでも参照渡しでもポインタ渡しでもお好きな方法をどうぞ

55 名前:デフォルトの名無しさん [2008/02/06(水) 14:54:21 ]
コンパイラに任せたときは値渡しですか

56 名前:デフォルトの名無しさん [2008/02/06(水) 14:57:04 ]
文字列 は参照ですが、stringもそうなりますか

57 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:06:37 ]
>>49
<iomanip>ヘッダ
setprecisionマニピュレータを使う。

double amount = 3.33333;
streamsize oldprec = cout.precision();
cout << setprecision(3) << amount << setprecision(oldprec) << endl;

58 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:17:12 ]
しかし1の位が0だと小数点以下が3ケタになってしまいます

#include <iostream>
#include <iomanip>

int main() {
   using namespace std;
   double amount=3.33333;
   double aaa=0.3333;
   streamsize oldprec = cout.precision();
   cout << setprecision(3) << amount << ' ' << aaa << setprecision(oldprec) << endl;
}

$ bjam precision-run
3.33 0.333

EXIT STATUS: 0

こういう場合は文字列処理に持っていくしかないですかねぇ?

59 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:34:32 ]
>>55
コンパイラは自動的にプログラムを書いたりはしてくれませんので、コンパイラに任せるなどということはできません
コンパイラは あなた が書いた通りに動きます
>>56
文字列(=文字の配列)への参照っていうと、こういうのでしょうか
void foo(const char(&s)[6]) {
printf("%s\n", s);
}
int main() {
foo("Hello");
}
あんまりやらないと思いますが

60 名前:58 mailto:sage [2008/02/06(水) 15:40:26 ]
#include <iostream>
#include <sstream>
#include <cassert>

using namespace std;

string foo (double n) {
  ostringstream os;
  string s;
  os << n;
  assert(os.str().size() >= 4);
  s = os.str();
  string::size_type b=0, e=0;
  b = s.find('.');
  e = b+3; --b;
  return s.substr(b, e);
}
int main() {
   double amount=3.33333, aaa=0.3333;
   cout << foo(amount) << ' ' << foo(aaa) << endl;
}
$ bjam
3.33 0.33

よくわからないので適当にsstreamで

61 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:41:03 ]
>>58
cout.setf(ios::fixed, ios::floatfield); をcout前に追加
setprecision(3) → setprecision(2)



62 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:21:15 ]
普通小さくするのがぬ゛うんキャストじゃないの?

63 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:56:43 ]
>>62
ごめん、よくわからない

64 名前:デフォルトの名無しさん [2008/02/06(水) 18:59:44 ]
MacOSXとGLUTの組み合わせで◯◯.appというディレクトリを作って
起動させると、はじめカレントディレクトリは
ルートディレクトリになってるんですけど
glutInit()を通過すると、◯◯.app/Contents/Resourcesが
カレントディレクトリになってんですよ
なんでこんな妙なところに行っちゃうんですかね

ちなみに◯◯.appの中身は以下の通りです
◯◯.app/Contents/Info.plist <--謎
◯◯.app/Contents/MacOS/○○.exe <--実際に動くc++コード
◯◯.app/Contents/Resources/icon.icns <--アイコンの絵

65 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:21:04 ]
D3DPRESENT_PARAMETERS d3dpp;
::ZeroMemory(&d3dpp, sizeof(d3dpp));



D3DPRESENT_PARAMETERS d3dpp = {0};

はちがいますか?

66 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:23:40 ]
詰め物

67 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:30:09 ]
>>64
そこがアプリケーションのリソースを置く場所だから、
親切に(あるいは余計なお世話か)移動してくれてるんじゃないかな

68 名前:デフォルトの名無しさん [2008/02/06(水) 20:39:50 ]
>>67
なるほど
Glutで何かしているのではなく
◯◯.exeに引数で渡してるんですね。
そんな気がしてきました。
ちょっとチェックしてみます。

69 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:00:07 ]
>>48
NULLポインタdeleteって問題ないんじゃないの?

70 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:03:06 ]
>>69
二重解放つったら解放したアドレスをもっかい解放のことだろ?

71 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:04:35 ]
deleteしただけで、0(NULL)になってるとは限らないんじゃないの?



72 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:32:43 ]
とりあえず gcc だとなってないな

73 名前:デフォルトの名無しさん [2008/02/06(水) 23:35:43 ]
質問です。g++を使っています。O2 で最適化してます。

クラスの中で定義した関数は勝手に inline となるのでしょうか?
inline をつけても意味は無いのでしょうか?

74 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:38:40 ]
deleteした後自分で0をポインタに代入するというTipsがある位だからな

75 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:44:29 ]
>>73
inline指定してるのと同じになる。
実際にinline化されてるかはコンパイラ次第。

76 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:48:07 ]
ありがとう。何か勘違いしてたみたい
deleteした後nullになるわけじゃないのね
WM_DESTROYが来た時点ではOSかが自動的にdeleteしちゃってるから多重解放
でエラーでかうのかな

77 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:42:46 ]
OSは自動的にdeleteなんてしません

78 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:47:50 ]
libhoge.so
をスタティックリンクすることってできるんでしょうか?

79 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:54:20 ]
はい。それがスタティックリンクできるようなアーカイブやオブジェクトモジュールであれば。

80 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:40:14 ]
>>77
じゃあ何でエラーでるの?
newしたまま終了してしまっても最悪OSがエラー処理として解放してくれるって聞いたけど

81 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:19:50 ]
>>80
エラーが出る事と自動的にdeleteする事を同列に考えるなよ
そもそもソース出してないのに的確な答えが出せると思える?
つーか自分で考えて答え出すか出たんなら帰れよ、必要最低限のレスは付いたんだから



82 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:55:50 ]
的確な答じゃないなら断言口調で書くなよ、紛らわしい。

83 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:04:00 ]
>>81
その考えをおまえが否定したから聞いてきてるんだろ

84 名前:デフォルトの名無しさん [2008/02/07(木) 06:42:38 ]
vector って大きさが可変のはずですが、vectorの配列のポインタ操作ってうまくいくのでしょうか?


たとえば以下のように double の vector の配列を作ったとします。

std::vector<double> a[3][4];

この vector 配列の要素ごとに違う回数だけ push_back() で値を入れたとします。
そして vector のポインターを引数にとる以下の関数があり

void hogehoge (std::vector<double>* arg ){

 for(std::vector<double>::const_iterator it=arg[0].begin();
  it!=arg[0].end();
  it++){
   std::cout<<"arg[1] "
 }
}

その引数に a[1] を以下のように入れた場合は

hogehoge(a[1]);

arg[0]というのは a[1][0] をちゃんとさしてくれるのでしょうか?

85 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:44:38 ]
否定したんじゃなくて、ありがちなパターンに陥っていそうだから指摘しただけだろ。

86 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:16:58 ]
>>84
当然さす

87 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:18:13 ]
>>80
newしたまま終了って、main/WinMain すら終了した後の話だぜ

88 名前:84 [2008/02/07(木) 07:20:43 ]
>>86
ありがとう!
ってことは sizeof(vector<double> は要素の数にかかわらず値は変わらないって事か。
不思議。

89 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:23:40 ]
>>88
意味が分からん。

ポインタに [0] をつけたら
そのアドレスにあるオブジェクトを指す。
極めてシンプルな答え。

90 名前:84 [2008/02/07(木) 07:30:44 ]
メモリを動的に作ってるからコンテナの要素が増えてもポインタは同じ所にあるって事か

91 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:31:39 ]
vectorの中身はnewで確保したメモリへのポインタ(と管理情報)だからな



92 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:35:21 ]
>>88
要素自体は動的確保されているからな

93 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:35:52 ]
いいえ。

94 名前:デフォルトの名無しさん [2008/02/07(木) 09:42:52 ]
vectorの中の要素をソートしたいのですが、そのとき、自分で定義した関数によって
ソートしたいです。どうすればよいですか?

95 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:45:44 ]
vectorは連続領域に格納される(配列と同じように扱える)から普通にソートしたらいい。

96 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:00:45 ]
>>94
std::sort

97 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:14:42 ]
スタティックリンクとかシャードリンクとかそのあたりのことが勉強できるサイトありませんでしょうか?

98 名前:デフォルトの名無しさん [2008/02/07(木) 14:26:10 ]
>>96
sort(vec.begin(), vec.end(), func);
と書きたい時、funcはどういう風に書けばよいでしょうか?
class func : public binary_function
{
bool operator()(const string &a, const string &b){}
};
と書いてみたのですが、コンパイルも通りません。
どうかお願いします。


99 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:29:08 ]
binary_functionでぐぐれ

100 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:30:57 ]
>>98
厳密に言うとstrict weak orderingを満たすように書く
ことになるが、

struct func : public binary_function
{
bool operator()(const string &a, const string &b) {
    return a < b; //辞書順で昇順
}
};

sort( vec.begin(), vec.end(), func() );

とかでどう?


101 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:31:04 ]
質問です。
VC6.0で自前のライブラリをまとめたStatic Link Libraryを作っています。
そのライブラリを実際に他のプロジェクトで使う際、リンクのところで以下のように躓きました。

・すでに LIBCMTD.lib(crt0dat.obj) で定義されています
これを筆頭に、大量にリンク警告がでました。
調べたところ
ttp://m--takahashi.com/bbs/pastlog/08900/08806.html
libの方はシングルスレッドで。テストプロジェクトのほうはマルチスレッドでコンパイルしているのが問題のようでした。
両方マルチスレッドにしたところ…

・"libcmt.lib" は他のライブラリの使用と競合しています
今度はこれだけでました。
調べたところ
ttp://m--takahashi.com/bbs/pastlog/03900/03888.html
libがReleaseコンパイルで、テストプロジェクトがDebugコンパイルなのが悪いようでした。
libをRelease版とDebug版の両方をつくり、適切にリンクするようにしたところ、エラーがきえました。

ここで疑問なのですが、今後の汎用性を考えるとlibは
・シングルスレッドDebug版
・シングルスレッドRelease版
・マルチスレッドDebug版
・マルチスレッドRelease版
をそれぞれ用意しておかなければならないのでしょうか?

一般的に用意されている"winmm.lib"などは、何も考えずにstdafx.hに
#pragma comment(lib, "winmm.lib")
と書いておけば、シングルスレッドだろうがマルチスレッドだろうが、DebugだろうがReleaseだろうが適切にリンクされました(警告やエラーでません)

自作のlibも同じくらい気軽に使えるようにするには、どのようにしたら良いのでしょうか?



102 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:32:02 ]
おっと、
>>99を見て
struct func : public binary_function<string, string, bool>
{
bool operator()(const string &a, const string &b) {
    return a < b; //辞書順で昇順
}
};

か。

103 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:38:33 ]
const が有った方がいいな。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef