トップページ⇒tech
1001コメント312KB

スレを勃てるまでもないC/C++の質問はここで 20

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2011/09/15(木) 00:17:43.25
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04
http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/
18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/
19
http://hibari.2ch.net/test/read.cgi/tech/1308106024/
0002デフォルトの名無しさん2011/09/15(木) 16:27:52.49
乙
0003デフォルトの名無しさん2011/09/15(木) 17:05:51.53
Cはヨーグルトの味がしますか?
0004デフォルトの名無しさん2011/09/16(金) 00:22:38.87
Cは醍醐味
0005デフォルトの名無しさん2011/09/16(金) 05:25:30.11
白かよ、青かよ、ウォッシュかよ?
0006デフォルトの名無しさん2011/09/16(金) 07:26:08.22
>>5
喰える、喰えない、割と好き
0007デフォルトの名無しさん2011/09/17(土) 11:39:07.68
ちょっと和んだw
0008デフォルトの名無しさん2011/09/21(水) 08:06:04.88
質問です。VC++ 2008 Express で
ttp://k3tec.net/neko_wiki/index.php?C%2FC%2B%2B%A5%BD%A5%B1%A5%C3%A5%C8%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%C2%E8%B0%EC%B2%F3
を参考にサーバ・クライアントプログラムを作っているのですが、実行すると
server.exe の 0x85c7ec4d でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x85c7ec4d を読み込み中にアクセス違反が発生しました。
というエラーが出て困っています。Segmentation Fault だと思うのですが、簡単なテストプログラムではエラーが出ないので原因がよくわかりません。
対処方法がわかる方いましたらご教示ください。
以下、ソース
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
using namespace std;
enum COMMAND { CMD_NOP, CMD_LOGIN, ....... };
0009つづき2011/09/21(水) 08:06:20.37
class Message {
SOCKET _dst_socket;
COMMAND _command;
public:
// コンストラクタ、デストラクタ、セッタ、ゲッタ
...
virtual int sizeOf() cosnt { return sizeof( *this ); }
};

class TextMessage : public Message {
char _text[ 16 ];
public:
// コンストラクタ、デストラクタ、セッタ、ゲッタ
...
virtual int sizeOf() const { return sizeof( *this ) }
};

class Server{ ... };
bool Server::send( SOCKET dst_socket, const Message& msg ) {
if( ::send( dst_socket, (char*) &msg, msg.sizeOf(), 0 ) != SOCKET_ERROR ) // このへんで sizeOf() を呼ぶとエラー。sizeof( TextMessage ) とかだとOK
}

class Tester {
public:
static void test( const Message& msg ) { cout << msg.sizeOf() << endl; }
};

int main() {
TextMessage tmsg;
Tester::test( tmsg ); // これはOK
...
}
0010デフォルトの名無しさん2011/09/21(水) 08:12:50.28
sizeOf()を呼ぶとエラーじゃなくて、sizeOf()を呼んだ後の次のsizeOf()で死ぬんだろ。
それなら原因は想定できた。
0011デフォルトの名無しさん2011/09/21(水) 08:15:04.46
こいつはくせえーッ!Java厨のにおいがプンプンするぜッーーーッ!
001282011/09/21(水) 09:06:04.18
>>10 ヒントだけでもお願いします。
ついでにJava厨臭くない方法があったら教えて下さい。
0013デフォルトの名無しさん2011/09/21(水) 09:34:10.54
>>9
それが>10の言いたいことかどうかは知らんが、(char *) & msgはsend()に渡すべき場所を指しているかデバッガでよく見てみたら?
つーか、Cスタイルキャストは使うなや。
0014デフォルトの名無しさん2011/09/21(水) 14:24:19.16
広域の::send()関数の引数に、Messageクラスのポインタを(char*)にキャストして
渡してまともに動作するものなのか?
TextMessageの場合は、たまたまクラスの銭湯に_test[16]があれば動作するかも知れないが…
001582011/09/21(水) 14:27:30.20
自己解決しました。
クライアントから送られてきたデータをそのまま流用しようとしたため sizeOf のアドレスが異なっていたようです。
char data[ SIZE ];
recv( src_socket, data, _countof( data ), 0 );
TextMessage tmp, msg;
memcpy_s( &tmp, sizeof( TextMessage ), data, sizeof( TextMessage ) );
msg = tmp;
server.send( dst_socket, msg );
としたらうまくいきました。
情報不足の質問をしてすみませんでした。アドバイスくださった方、ありがとうございました。
001682011/09/21(水) 14:35:44.97
あ、sizeOf のアドレスじゃないや。まあいいや
0017デフォルトの名無しさん2011/09/22(木) 00:48:42.18
アドバイスを受けて事故解決かよ。おめでてーな。
0018デフォルトの名無しさん2011/09/22(木) 11:31:13.74
以下のような宣言に対して…

template< class T1 >
class CHoge
{
void f1();
template< class T2 > void f2();
};

f1(),f2()の定義を宣言と分けて書きたい場合,f1()は,
template< class T1 > void CHoge< T1 >::f1(){ ... }
と書きますが,
f2()の実装はどのように書けばよいのでしょうか?
0019デフォルトの名無しさん2011/09/22(木) 14:27:06.20
template <class T1> template <class T2> void CHoge<T1>::f1<T2>() { ... }
0020デフォルトの名無しさん2011/09/22(木) 14:36:30.97
エラーが出ます

template <class T1>
class CHoge {
T1 t;
void f1();
template <class T2> void f2();
public:
CHoge(T1 x) : t(x) {}
};

template <class T1>
void CHoge<T1>::f1() {
std::cout << t << std::endl;
}

template <class T1>
template <class T2>
void CHoge<T1>::f2<T2>() {
std::cout << static_cast<T2>(t) << std::endl;
}

error: function template partial specialization 'f2<T2>' is not allowed
0021デフォルトの名無しさん2011/09/22(木) 14:39:24.95
template <class T1> template <class T2> void CHoge<T1>::template f2<T2>() { ... }
0022デフォルトの名無しさん2011/09/22(木) 14:43:18.70
>>21
>>20と同じエラーが出ます
0023デフォルトの名無しさん2011/09/22(木) 14:55:45.20
template <class T1> template <class T2> void CHoge<T1>::template f2() { ... }
0024デフォルトの名無しさん2011/09/22(木) 15:00:15.12
>>23
ありがとうございます

template <class T1>
class CHoge {
T1 t;
public:
void f1();
template <class T2> void f2();
CHoge(T1 x) : t(x) {}
};

template <class T1>
void CHoge<T1>::f1() {
std::cout << t << std::endl;
}

template <class T1>
template <class T2>
void CHoge<T1>::f2() {
std::cout << static_cast<T2>(t) + 0.5 << std::endl;
}

int main()
{
CHoge<int> c(1);

c.f1();
c.f2<double>();
}
0025182011/09/22(木) 15:49:42.60
>>19〜24 感謝.
0026デフォルトの名無しさん2011/09/22(木) 19:13:14.04
計算式の入った文字列("1+2*3"など)を用意しておいて、その計算結果(先程の例では7)を変数に代入するみたいなことって出来ますか?
0027デフォルトの名無しさん2011/09/22(木) 19:32:01.78
>>26
自分でパーサー書けば出来る
0028デフォルトの名無しさん2011/09/22(木) 19:59:16.78
>>26
Lua使えば1分でそういうコードが書けるよ
0029デフォルトの名無しさん2011/09/23(金) 01:57:41.81
boostでなかったっけ
0030デフォルトの名無しさん2011/09/26(月) 13:40:15.69
L"abc"のLって何ですか?
一文字なのでぐぐれなくて困っています。
0031デフォルトの名無しさん2011/09/26(月) 13:44:45.38
>>30
ワイド文字
0032デフォルトの名無しさん2011/09/26(月) 18:51:14.14
「C言語 文字列 L」でぐぐったら一発だったが
0033デフォルトの名無しさん2011/09/26(月) 19:17:29.98
X a(),b(),c(),d();
〜
if(is_true) return;
〜
Y e();
} → if(!is_true)e.~e();→ d.~d();→ c.~c();→ b.~b();→ a.~a();

RAIIは開放の順番は規定されてるの?
それとも順不同?
0034デフォルトの名無しさん2011/09/26(月) 19:59:55.36
>>33
X a()は返却値X型で引数をとらない関数aの宣言で解放もなにもないし
変数の構築と破棄の順序関係はRAIIなんかとは直接関係ない変数に関する普通の話だしでつっこみどころしかない。
最低限の知識が正しく身についてない人にはそれより先は教えようがないぞ。
0035デフォルトの名無しさん2011/09/26(月) 20:13:36.69
>>33
規定されてるよ

>>34
struct A{};
A a();
0036デフォルトの名無しさん2011/09/26(月) 21:54:42.25
デストラクタコール記述のつもりだろうが変数名でデストラクタ書いてるwwから
生兵法君が鼻息荒げて訳判らん(キリッしちゃったんだろうな
0037デフォルトの名無しさん2011/09/27(火) 21:03:18.94
もう何度も質問されていると思いますので簡潔にでいいのでお答えいただけないでしょうか?
PHPやJavaScriptは習得しているのですが、ちょっとC系が必要になりそうなのです
その際、C -> C++と学習したほうがやはりいいのでしょうか?
CはC++に吸収済みとか言う人もいるようですが
オブジェクト指向に関しましてはまぁ少々は慣れていると思います
やはりC++をいきなりというのはつまずく点が多いのでしょうか?
また、CとC++はオブジェクト指向以外にも違いはあるのでしょうか?
Webで調べたのですがいまいち分かりませんでした
0038デフォルトの名無しさん2011/09/27(火) 21:15:01.97
>>37
必要な言語を学習したんでいい。C++が必要なら最初からそっちでおk
Cにオブジェクト指向とテンプレート(ジェネリックプログラミング)、例外を加えたのがC++だな
0039デフォルトの名無しさん2011/09/27(火) 21:25:22.74
ご回答ありがとうございます
>必要な言語を学習したんでいい
とはPHP等のオブジェクト指向を学習しているので、そのままC++にいってもいいという意味でしょうか?
Cで出来ることはC++で出来ると聞いていますので、C++に行こうかと思いました
0040デフォルトの名無しさん2011/09/27(火) 21:59:07.32
>>39
仕事でも趣味でも受験でも、目的があるならそれに沿った言語を選択して学習すればいい。
学習そのものが目的なら自分で調べて悩んで下さい。学習になります。
0041デフォルトの名無しさん2011/09/27(火) 22:22:48.68
>>37
CとC++の肝はメモリー管理。
どちらからやっても同程度に壁になる
0042デフォルトの名無しさん2011/09/27(火) 23:08:30.45
日頃C++をバリバリ使ってると、Cの仕事は苦痛。
日頃Cをバリバリ使ってると、C++の仕事は苦痛。

その程度には違うので、C系なんてごまかしてないで、
プロジェクトに必要な方をやるべし。両方必要なら迷わずC++。
0043デフォルトの名無しさん2011/09/28(水) 10:13:54.66
設計がしっかりしてればどっちでやっても大差ない
0044デフォルトの名無しさん2011/09/28(水) 13:08:19.61
アルゴリズムの話なのですが、
手続き型言語でコールバックは悪ってのは何故なんでしょうか。
0045デフォルトの名無しさん2011/09/28(水) 13:10:23.06
悪じゃないです
0046デフォルトの名無しさん2011/09/28(水) 13:44:47.44
純粋な手続き型ではA-B-C-D-Eという流れなら毎回A-B-C-D-Eの順で処理が進んでいくけど
コールバックが入るとA(ハンドラ登録)-コールバック-B-C-D-Eだったり
A(ハンドラ登録)-B-C-D-E-コールバックだったりと処理の順序関係が安定しなくなる、
あるいは順序を安定させようとするとマルチプロセス化や待機状態を作るなどの
純粋な手続き型と比べると余計なコストがかかるなどで相性が悪いから。
0047442011/09/28(水) 18:57:01.56
>>46
なるほど、ありがとうございました。
0048デフォルトの名無しさん2011/09/28(水) 19:37:53.90
assertってやめたほうが良くないですか?
デバッグ時に発生しなかったバグケースがリリース時に出たら困りますよね
0049デフォルトの名無しさん2011/09/28(水) 19:49:24.57
>>48
assert使った事ないの?
0050デフォルトの名無しさん2011/09/28(水) 19:51:34.90
>>49
リリース時に例外を投げるassertもどきなら使ってます
ボトルネックでは仕方ないからassertですが…
0051デフォルトの名無しさん2011/09/28(水) 19:53:58.32
リリースビルドの意味わからなかったり直接呼んだりしてるなら
ディスパッチャーの中で発生させるアラートや事後アラートがバレると
IQの低さを悟られてしまうから止めといたほうがイイとおもうよ
0052デフォルトの名無しさん2011/09/28(水) 19:58:18.01
煽りはレスしなくて結構です
0053デフォルトの名無しさん2011/09/29(木) 00:38:50.35
すでにある構造体(コンストラクタなしの型)のテンポラリオブジェクトを無駄なく構築するにはどうすればいい?
func(hoge(1, 2));
というふうな書き方ができないから
{ hoge h(1, 2); func(h); }
と書いてるんだけど、ダサすぎて困る
0054デフォルトの名無しさん2011/09/29(木) 00:46:48.17
>>53
C++ならコンストラクタを書く
CならC99のコンパウンドリテラルを使う
C89はどうしようもない
0055デフォルトの名無しさん2011/10/01(土) 17:55:42.79
printf("%s %d", "hoge", x);
な所が
printf("hoge", "hoge", x);
こうなるケースがあっても問題ない?
0056デフォルトの名無しさん2011/10/01(土) 18:03:28.62
初心者には意味不明な質問だな
0057デフォルトの名無しさん2011/10/01(土) 18:36:14.12
多いのは問題あるが少ないのは問題ない
0058デフォルトの名無しさん2011/10/01(土) 19:08:08.85
ファイルから文字列を読み込んで,その文字列を名前にもつ関数を呼び出す事ってC,もしくはC++で可能なんでしょうか
例えば func,100 とだけ書かれたファイルを読み込んで,func(100)という風に呼び出したいのです
0059デフォルトの名無しさん2011/10/01(土) 19:19:48.85
if(strcmp(str, "func") == 0)
{
  func(num);
}
0060デフォルトの名無しさん2011/10/01(土) 19:38:38.90
void hoge(void) { std::cout << "hoge" << std::endl; }
void fuga(void) { std::cout << "fuga" << std::endl; }

map<string, void (*)(void)> m;
m["hoge"] = hoge;
m["fuga"] = fuga;

string s;
cin >> s;

map<string, void (*)(void)>::iterator i(m.find(s));
if(i != m.end()) { (*i)(); }
0061デフォルトの名無しさん2011/10/01(土) 19:42:25.38
あらかじめ用意した関数しか呼び出せねえのかこの糞ゲーは
0062デフォルトの名無しさん2011/10/01(土) 19:46:40.08
用意してないものを利用できると思うほうがおかしい
0063デフォルトの名無しさん2011/10/01(土) 20:00:11.71
>>59
ありがとうございます
たぶん,これでもやろうとしてることは出来ないことはないんですが
全部の関数でそれをするのはちょっと辛いなあと思ってたんです
言葉足らずですいません

>>60
C++はまだ勉強中なのでよくわからないのですが,おそらくイメージしてたのはこれです
mapとか言うのを調べればよさそうな感じですね
勉強になりました

お二方,ありがとうございました
0064デフォルトの名無しさん2011/10/03(月) 22:58:54.79
以下のプログラムで実行結果を「ABC」にしたいのですが「ABCBCC」になってしまいます
どうすればいいですかね・・・

#include<stdio.h>
int main()
{
int i;
char c[100]={'A','B','C'};

for(i=0;i<3;i++)
printf("%s",&c[i]);

printf("\n");
}
0065デフォルトの名無しさん2011/10/03(月) 23:02:34.67
%sを%cにする?
0066デフォルトの名無しさん2011/10/03(月) 23:05:19.91
s->c
0067デフォルトの名無しさん2011/10/03(月) 23:11:29.79
>>65
%cにしたら出力が「???」になりました
0068デフォルトの名無しさん2011/10/03(月) 23:14:04.75
printf("%c",c[i]);
0069デフォルトの名無しさん2011/10/03(月) 23:15:41.95
プリントは&いらん
0070デフォルトの名無しさん2011/10/03(月) 23:16:03.02
>>67
申し訳ない
>>68が正解だな
0071デフォルトの名無しさん2011/10/03(月) 23:17:43.86
>>68-69
できました!ありがとうございます
&はscanfと混同してました・・・初歩的なミスでしたね^^;
0072デフォルトの名無しさん2011/10/04(火) 18:16:34.85
Boost pythonを使用しようとして
http://d.hatena.ne.jp/moriyoshi/20091214/1260779899
を参考にしているのですが、vector<int>からpythonのリストへの変換例のコードの意味がわかりません。
参考URL中の

.def("__getitem__", (int const&(foo::int_vector::*)(foo::int_vector::size_type) const)&foo::int_vector::at)

の中で(int const&以下が何をやっているのでしょうか。さっぱり理解できません。
0073デフォルトの名無しさん2011/10/04(火) 19:56:17.57
>>72
foo::int_vector::at へのメンバ関数ポインタを取得するために、
返却値型 int const & で引数は一つで型は foo::int_vector::size_type で const 修飾されてる foo::int_vector のメンバ関数の
メンバ関数ポインタ型へ明示的なキャストをしてる。
0074デフォルトの名無しさん2011/10/04(火) 20:22:34.44
>>73
ありがとうございます。
関数キャストは
(返却値型 (ポインタ型)(引数リスト) )
の形式で行うということですね。
0075デフォルトの名無しさん2011/10/04(火) 21:16:27.46
なんか正しくわかってないような?
・メンバ関数ポインタ
・オーバーロードされてる(メンバ)関数への(メンバ)関数ポインタの取得
についてわかってるならそれでいいよ
0076デフォルトの名無しさん2011/10/06(木) 01:12:52.40
vectorの各要素を<algorithm>を使って3乗するとして、

案1
class MyPow {
pulic:
  double operator() (double value){return pow(value, a_)
  MyPow(double a):a_(a)
private:
  double a_;
}
に
transform(vec.begin(), vec.end(), vec.begin(), MyPow(3.0));


案2
class MyPow: public binary_func<double, double, double> {
  double operator() (double value, double a) {return pow(value,a);}
}
に
transform(vec.begin(), vec.end(), vec,begin(), bind2nd(MyPow(), 3.0))

どちらの方が好ましいのでしょうか。どちらでもOK?
0077デフォルトの名無しさん2011/10/06(木) 01:15:48.59
>>76
どちらも単なる関数オブジェクトだから大差ないんじゃね?
強いて言えば案1の方が3.0を内部状態として持つのでそれだけ引数の
受け渡しが減る
0078デフォルトの名無しさん2011/10/06(木) 01:48:04.60
const int n = 10;

int main()
{
std::vector<double> vec;

for (int i = 0; i < n; i++)
vec.push_back(std::rand() % 100);

std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
std::cout << std::endl;

std::transform(vec.begin(), vec.end(), vec.begin(), [](double& x) { return std::pow(x, 3.0); });

std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
std::cout << std::endl;
}
0079デフォルトの名無しさん2011/10/06(木) 02:04:54.23
やっぱりラムダ入ったのは大きいよなぁ
0080デフォルトの名無しさん2011/10/06(木) 02:19:35.41
mem_fun_ref(笑)
0081デフォルトの名無しさん2011/10/06(木) 02:23:32.07
-> を使えば一発
0082デフォルトの名無しさん2011/10/06(木) 09:00:52.21
やはりここはptr_funの出番d・・・
transform(vec.begin(), vec.end(), vec.begin(), bind2nd(ptr_fun<double, double, double>(pow), 3.0));
0083デフォルトの名無しさん2011/10/08(土) 21:10:35.55
もっとクールな方法でパブリックメンバ変数を外から見たらconstに中から見たら非constにできる?
struct hoge
{
int const x;
hoge(void) : x(0) { }
hoge(int x) : x(x) { }
hoge & operator = (hoge const & h) { const_cast<int &>(x) = h.x; return *this; }
void inc(void) { const_cast<int &>(x) += 1; }
void dec(void) { const_cast<int &>(x) -= 1; }
};
0084デフォルトの名無しさん2011/10/08(土) 22:12:54.93
publicなメンバ変数という設計を捨てる
0085デフォルトの名無しさん2011/10/09(日) 01:07:01.67
void君と名付けよう
0086デフォルトの名無しさん2011/10/09(日) 09:26:21.88
ファイルを適当な変数の配列にファイルサイズ分一気に読み込みたいんですが、
どうすればできますか?
今はこんな風にして凌いでるけど、どう考えても馬鹿らしすぎる


std::string buf;
std::string DataStr;
while(FileStream&&getline(FileStream,buf))DataStr+=buf;
char *src=new char [DataStr.size()];
memcpy((void *)src,DataStr.c_str(),DataStr.size());
0087デフォルトの名無しさん2011/10/09(日) 10:18:33.83
std::ifstream ifs("test.txt", std::ios::in|std::ios::binary);
ifs.seekg(0, std::ios::end );
size_t size = ifs.tellg();
ifs.seekg(0, std::ios::beg );
char *buff = new char[size+1];
ifs.read(buff, size);
buff[size] = '\0';
// ...
delete[] buff;
0088デフォルトの名無しさん2011/10/09(日) 10:54:32.05
#include <exception>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
template <class A> void readAllAtOnce(char const * path, std::vector<char, A> & data) {
std::fstream file;
file.exceptions(std::ios::badbit | std::ios::eofbit | std::ios::failbit);
file.open(path, std::ios::in | std::ios::binary);
file.seekg(0, std::ios::end);
std::ios::pos_type end(file.tellg());
file.seekg(0, std::ios::beg);
std::ios::pos_type beg(file.tellg());
std::ios::off_type off(end - beg);
if(data.max_size() < off) throw std::exception();
data.resize(off);
file.read(&data[0], off);
file.close(); }
int main(void) {
try {
std::vector<char> buf;
readAllAtOnce("test.txt", buf);
std::string str(buf.begin(), buf.end());
std::cout << str << std::endl; }
catch(...) { std::cout << "err" << std::endl; }
return 0; }
0089デフォルトの名無しさん2011/10/09(日) 23:12:40.33
窓板の質問スレでたずねたんだけど、返答がないようなのでこっちでも聞かせてください。

C++でWinXPでネットワーク接続を表示したときに表示される「LANおよび高速インターネット」を
表示するexeを作成したいですが、ネットワーク名なんかはレジストリから取得できました。
しかし、切断したネットワーク名まで表示される状態で上記の内容とはずれてしまっています。
レジストリに保管されているネットワークから現在接続されているネットワークだけ表示したいんですけど、
何をフラグとしてしているのかがわかりません。

どなたかご教授お願いします。
0090デフォルトの名無しさん2011/10/10(月) 01:12:36.92
http://blogs.msdn.com/b/jpwdkblog/archive/2009/09/29/9900575.aspx
devcon status =net
でdisabled/runningの判別がつくけど他にいい方法があるかもしれん
0091デフォルトの名無しさん2011/10/10(月) 01:19:16.35
>>87-88
ありがとう、seekgを使うのがポイントなのね
0092デフォルトの名無しさん2011/10/10(月) 03:43:03.15
イテレータってインクリメントやデクリメントだけでなく、+1や-1でも前後の要素にアクセスできる?
0093デフォルトの名無しさん2011/10/10(月) 09:19:56.59
自分で試したほうが早かった。できた
0094デフォルトの名無しさん2011/10/10(月) 09:38:55.18
浮動小数点数をバイナリで保存するにはどうすれば?
0095デフォルトの名無しさん2011/10/10(月) 10:44:11.90
fwrite
ofstream::write
0096デフォルトの名無しさん2011/10/10(月) 11:18:44.56
>>90
ありがとう。
devconは知らなかった。試してみる。
0097デフォルトの名無しさん2011/10/10(月) 23:31:47.94
ローベルのC++入門講座をお持ちの方にお聞きしたいのですが、
P308の演算子オーバーロードの流れがよくわかりません。

> delete[] m_array;
> m_array = array;
deleteしたにも関わらず直後にdeleteしたものを使っていて混乱しています。
0098デフォルトの名無しさん2011/10/10(月) 23:35:20.40
ロベールの翻訳は分かりやすい
0099デフォルトの名無しさん2011/10/10(月) 23:36:11.26
その2行だと。
deleteしたのは、m_arrayのポインタが指す領域。
m_arrayはまだ残っている。
そこに、arrayのエリアのポインタを再設定しただけ。
0100デフォルトの名無しさん2011/10/10(月) 23:37:57.79
×そこに、arrayのエリアのポインタを再設定しただけ。
○そこに、arrayの中にあるポインタを再設定しただけ。

0101デフォルトの名無しさん2011/10/10(月) 23:40:21.83
m_array→[a][a][a][a][a][a]
array→[b][b][b][b][b][b][b][b][b][b]
↓
↓delete [] m_array
↓
m_array→???
array→[b][b][b][b][b][b][b][b][b][b]
↓
↓m_array=array
↓
m_array--↓
 array→[b][b][b][b][b][b][b][b][b][b]
0102デフォルトの名無しさん2011/10/10(月) 23:52:41.43
>>99-101
よくわかりました。ありがとうございます!
0103デフォルトの名無しさん2011/10/11(火) 05:52:14.38
あるクラスのポインタ型の代入演算を定義したいと思っています。
つまり、
Hoge *a,*b;
a=new Hoge;
b=new Hoge;
a=b;<-この部分

この部分の代入演算子を定義するために以下のように書きましたが
チェック用の文字列が出力されません。(コンパイルは通ります)
class Hoge{
public:
Hoge(){}
Hoge* operator=(Hoge& *hoge){cout<<"Check!"<<endl;return this;}
};

どなたか申し訳ないのですがご教示願えないでしょうか。
0104デフォルトの名無しさん2011/10/11(火) 07:28:56.83
>>103

その代入演算子は、
Hoge a;
Hoge b;
...
a = &b;
としたとき、&a を返す演算子だから呼ばれてない。
0105デフォルトの名無しさん2011/10/11(火) 07:36:40.08
>>103
これをやろうとすると、ポインタ型のグローバルな代入演算子をオーバーロードすることになるけれど、
C++では、その操作は許されていない。つまり、できない。
どうしてもというなら、copy()メソッドのようなものを作るしかない。
0106デフォルトの名無しさん2011/10/11(火) 10:46:38.24
template<typename T>struct ptrh{T*const operator=(T*p){return h=p;}ptrh(T*p):h(p){}T*h;};
template<typename T>ptrh<T> ptrh_cast(T*a){return ptrh<T>(a);}

ptrh_cast<hoge>(a)=b;
0107デフォルトの名無しさん2011/10/11(火) 10:53:41.09
それ挙動確認して無いだろ
参照つけないとダメだな
0108デフォルトの名無しさん2011/10/11(火) 13:51:34.26
STLのコンテナやイテレーターが満たさないといけない要件をわかりやすくまとめたサイトや書籍は有りますか?
0109デフォルトの名無しさん2011/10/11(火) 16:22:01.56
久々に実行したら

Setting Default Parameters...
Parsing Configfile encoder.cfgCannot open configuration file encoder.cfg.
続行するには何かキーを押してください . . .

ってでて動きません。
環境変数とかはいじってないはずなんですけど・・・
解決方法がわかる人がいれば教えてください!
0110デフォルトの名無しさん2011/10/12(水) 01:16:57.92
struct CUSTOMVERTEX2
{
FLOAT x, y, z,h;
DWORD color;
float u,v;
};

CUSTOMVERTEX2* vertices;
vertices=new CUSTOMVERTEX2[kakuKosu*2+2];

verticesを静的に初期化したらうまくいったのですが、
newを使って初期化したら何も表示されなくなりました。
newの書き方が変なのでしょうか。
0111デフォルトの名無しさん2011/10/12(水) 01:35:29.79
あなたの求める挙動による
0112デフォルトの名無しさん2011/10/12(水) 01:55:27.49
>>111
CUSTOMVERTEX2* vertices;
vertices=new CUSTOMVERTEX2[20];
と
CUSTOMVERTEX2 vertices[20];
で挙動の違いがあるんですか?

ちなみに
VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
return;
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();

verticesの中身は上記のような感じでバッファーに渡しています。
0113デフォルトの名無しさん2011/10/12(水) 02:06:05.32
そもそもそれじゃ静的な初期化にもなってないが、
上と下でsizeofが何を返してくるかprintfで確かめたら直ぐに原因は分かる
0114デフォルトの名無しさん2011/10/12(水) 02:07:00.46
>>112
sizeofの結果が変わってくる
sizeof(vertices[0])*20にすればおk
0115デフォルトの名無しさん2011/10/12(水) 10:28:00.33
>>113-114
ありがとうございます。
できました。
0116デフォルトの名無しさん2011/10/13(木) 00:09:58.48
初歩的な質問なのですが、エラー処理のあたりがよくわかりません。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 char *str;
 int num, i;

 printf("表示するaの個数を入力\n");
 scanf("%d", &num);

 str = (char *) malloc (sizeof (char) * (num +1));
 if(!str){                  ←【Q1.この!strの意味は何でしょう?】
  printf("メモリが確保できませんでした。\n");
  return 1;                ←【Q2.return 0;ではないのは何故ですか?】
 }
 for (i=0; i<num; i++){
  *(str+i) = 'a';
 }
 *(str+num) = '\0';
 printf("%s\n", str);
 return 0;
}
0117デフォルトの名無しさん2011/10/13(木) 00:30:21.08
> if(!str){                  ←【Q1.この!strの意味は何でしょう?】
メモリー確保ができなかった場合rtn=0になる。その確認
>  return 1;                ←【Q2.return 0;ではないのは何故ですか?】
プログラムが終了したとこのコードを1(エラー)として0(正常)特別している。
0118デフォルトの名無しさん2011/10/13(木) 00:31:51.37
×特別している。
○と区別している。
0119デフォルトの名無しさん2011/10/13(木) 01:07:29.45
A1.malloc()は必要なメモリの確保に失敗するとNULLを返すのでそれをチェックしている
A2.普通main()は成功時に0、失敗時に非0を返す。そのためのマクロEXIT_SUCCESSと
EXIT_FAILUREも定義されている
0120デフォルトの名無しさん2011/10/13(木) 03:12:37.85
>>117>>118>>119
ありがとうございます。理解できました。
論理演算子とNULL値をよく理解していませんでした。
0121デフォルトの名無しさん2011/10/13(木) 07:06:25.03
C++を勉強しようと思ってるんだけど
練習問題がついた良いサイトありませんか?

http://www.geocities.jp/ky_webid/ProgrammingPlacePlus/c/index.html
こんなサイトのC++版があれば理想的なんだけど
0122デフォルトの名無しさん2011/10/13(木) 08:52:06.18
>>121
C++はCと違ってそのボリュームは生半可じゃないぞ
独習C++でも買え
0123デフォルトの名無しさん2011/10/13(木) 11:17:11.22
Cの生みの親が死んじゃった・・・・・・
0124デフォルトの名無しさん2011/10/13(木) 14:14:16.82
独学ですがC言語をマスターした後は何を勉強すればいいですか
0125デフォルトの名無しさん2011/10/13(木) 14:39:55.46
何がしたいのかによる。
0126デフォルトの名無しさん2011/10/13(木) 14:56:23.02
>>124
基本情報を取りましょう
0127デフォルトの名無しさん2011/10/14(金) 12:57:00.56

C言語の課題なんだが 、五つの数字足したあとに平均だす方法がわからん。
教えてください
0128デフォルトの名無しさん2011/10/14(金) 13:11:34.53
ans = ( a + b + c + d) / 5;
0129デフォルトの名無しさん2011/10/14(金) 13:12:48.93
ans = ( a + b + c + d + e) / 5; // 1こ足りんかった
0130デフォルトの名無しさん2011/10/14(金) 13:18:31.86
<<127
すまない、補足なんだがC++だ
0131デフォルトの名無しさん2011/10/14(金) 15:16:10.61
平均の出し方も分からない奴がプログラミングをやる時代か……
0132デフォルトの名無しさん2011/10/14(金) 15:58:18.97
平均の求め方をやるのは小6だ
あとはわかるな?
0133デフォルトの名無しさん2011/10/14(金) 16:10:02.03
最近の小学生はプログラミングなんかやってるのか
0134デフォルトの名無しさん2011/10/14(金) 16:15:21.83
まあ小6っつったらいろいろ背伸びしたくなる時期なんだろうな
0135デフォルトの名無しさん2011/10/14(金) 16:19:22.80
後で平均する数を増やすかもしれないのか、小数点以下をどうするのか、そもそも5つの値をどのように与え、どのように出力したいのか
0136デフォルトの名無しさん2011/10/14(金) 16:24:40.12
小学生とか
俺がお年玉でVB4.0を買った頃じゃないか
結局ろくなもん作れなかったけど
0137片山博文MZ2011/10/14(金) 17:10:05.90
int *p = new int[0]; // OK or NG?
0138デフォルトの名無しさん2011/10/14(金) 19:05:53.66
>>137
OK
ついでに言うと自分でnewをオーバーロードするときもサイズ0に対応できるように書かなければならない

0139デフォルトの名無しさん2011/10/14(金) 21:12:05.51
>>130

俺と同じ悩み持っててワロタ

#include <stdio.h>
int main()
{
int a, b, c, d, e;
int f=5;

puts("一つ目の数を入力");
scanf("%d", &a);
puts("二つ目の数を入力");
scanf("%d", &b);
puts("三つ目の数を入力");
scanf("%d", &c);
puts("四つ目の数を入力");
scanf("%d", &d);
puts("五つ目の数を入力");
scanf("%d", &e);

}

ここまでは出来るんだが、ここから合計と平均をprintfで出力する方法がわからない。
たぶん同じ事言ってるんだと思う
0140デフォルトの名無しさん2011/10/14(金) 21:16:55.22
printf(" 平均=%d",(a + b + c + d + e)/f); // 小数点以下切り捨ての場合
0141デフォルトの名無しさん2011/10/14(金) 21:35:33.01
ttp://codepad.org/JYRrwYAj
0142デフォルトの名無しさん2011/10/15(土) 08:29:11.34
>>139
C++らしさをどうしても出したいなら、cin と cout 使えば?
0143デフォルトの名無しさん2011/10/15(土) 09:48:34.05
>>142
その前にcstdioだろ
0144デフォルトの名無しさん2011/10/15(土) 15:10:53.49
0x年代でもscanfの人気は揺るぎなかった
0145デフォルトの名無しさん2011/10/15(土) 16:56:04.82
fgets(buf, sizeof(buf), stdin);
n = sscanf(buf, "%d %d", &a, &b);
0146デフォルトの名無しさん2011/10/16(日) 00:22:43.73
VISUALC++やってんだけど四捨五入どうやんの?
0147デフォルトの名無しさん2011/10/16(日) 00:44:14.95
四捨五入した値の用途次第
0148デフォルトの名無しさん2011/10/16(日) 00:48:50.24
>>146
お前の頭の中の四捨五入の手順を細かく分解してその一つ一つの段階をプログラムにするだけ

頭の中のもやもやした考えを分析・整理してプログラムで表現するのは
上手くプログラムを書くのに必須の能力だからそのつもりでやってみな
0149デフォルトの名無しさん2011/10/16(日) 00:51:37.79
>>146
boost::math::round<T>(X)
0150デフォルトの名無しさん2011/10/16(日) 01:00:25.46
>>146
#include <boost/math/special_functions.hpp>
0151デフォルトの名無しさん2011/10/16(日) 13:49:05.02
>>146
0.5をたしてきりすてる
0152デフォルトの名無しさん2011/10/17(月) 21:13:14.45
>>147
哀しいけどソレが現実なのよね
0153デフォルトの名無しさん2011/10/18(火) 00:12:38.15
質問です。
下のようなファイルをバイナリ形式で保存する場合、
ClsFile clsFile;
write(clsFile, sizeof( ClsFile ) );
とすると、ClsPageはポインタしか保存されないですよね?

ということは、
write(clsFile, sizeof( ClsFile ) );
for(ii = 0;ii < 5; ii++){
write(m_page[ii], sizeof( ClsPage) );
}
と、わざわざ構造体を分けて保存しないといけないのでしょうか?

Class ClsFile{
Class ClsPage{
char m_moji[200];
};
ClsPage* m_page[5];
}
0154デフォルトの名無しさん2011/10/18(火) 02:05:15.85
>>153
当たり前
C++なら自分でoperator<<を作るといい
0155デフォルトの名無しさん2011/10/18(火) 08:03:56.29
>>153
オーバーロードと再帰をうまく使えば簡単に保存できるよ
0156デフォルトの名無しさん2011/10/18(火) 09:28:51.24
>>153
まとめて保存すると、場合によってはアライメントの罠にはまって復帰できなくなる。
0157デフォルトの名無しさん2011/10/18(火) 10:41:55.33
>>153
boost.serialization使えばいいじゃん
0158デフォルトの名無しさん2011/10/18(火) 10:44:41.95
boost使えばいいじゃん厨は低能
0159デフォルトの名無しさん2011/10/18(火) 12:56:42.27
車輪の再発明をしようとする奴は低脳
0160デフォルトの名無しさん2011/10/18(火) 13:05:27.32
車輪の再発明ができない奴は、底辺コーダー止まりだろ
0161デフォルトの名無しさん2011/10/18(火) 13:26:56.08
>>159
boostでいいじゃん厨がアホであることを示す典型的なレスだな
0162デフォルトの名無しさん2011/10/18(火) 14:04:55.95
>>159
プログラムの99%は車輪の再発明、おまえはプログラムできないなw
0163デフォルトの名無しさん2011/10/18(火) 17:15:55.61
そもそも質問に答えずにboostを薦める時点で質問理解力なしで解雇が妥当
0164デフォルトの名無しさん2011/10/18(火) 19:00:58.56
boost は利用できる局面では便利だが、背景を無視して何でもかんでもboost言う奴は
確かにごにょごにょごにょ…特に実務に携わる機会の少ない研究者やアマチュアに多い傾向があるように思える。

0165デフォルトの名無しさん2011/10/18(火) 19:51:46.04
codepadに具体的なコード上げてみろよ
話はそれからだ
01661532011/10/19(水) 00:59:45.97
いろいろアドバイスありがとうございます。
しかし、私にはどれが最適なのかが解りません・・・
将来的に下記のようにバージョンを変更したときにも互換性を持たせられるようにしたいと思っているのですが、
その場合、構造体毎ではなく、クラス内で1メンバ毎に読み書きする仕様にしたほうが良いのでしょうか。

Class ClsPage{
char m_moji[200];
};
を
Class ClsPage{
char m_Title[10];
char m_moji[200];
};
0167デフォルトの名無しさん2011/10/19(水) 07:37:42.94
クラス内にシリアライズ/デシリアライズするメソッドを作成して、先頭にバージョン情報を入れておく。
デシリアライズ時にはバージョン情報を見てメンバを初期化して下さい。
0168デフォルトの名無しさん2011/10/22(土) 15:47:49.83
0からC、C++を始るのに、
初心者でも分かり易く解説されているサイトがあれば教えて下さい。
もしなければ、お勧めの本を教えて下さい。

できれば少ない冊数で、安価な物でお願いします・・・。
0169デフォルトの名無しさん2011/10/22(土) 16:01:41.32
値段の問題なら、図書館で借りるか古本屋で買えば良い
0170デフォルトの名無しさん2011/10/22(土) 16:07:07.00
独習C
0171デフォルトの名無しさん2011/10/22(土) 16:32:41.44
ロベールの翻訳が分かりやすい
0172デフォルトの名無しさん2011/10/22(土) 16:39:59.81
>>168
やさしいC
やさしいC++
0173デフォルトの名無しさん2011/10/24(月) 23:59:40.88
参考書の質問があったので、一緒に相談させてください。
『やさしいC』の次に使う参考書で悩んでいます。
来年からPGとして働く予定があり、そのため今は独学で勉強中という状況です。

3ヶ月かけ、参考書付属の練習問題は解けるようになったのですが
応用がほとんどできない、というのが悩みです。
宿題スレにある、大学生や専門学校生がこなしていると思われるレベルのものも
ほとんど自力では100%のものが作れません。(解答を見れば理解できます)
「C言語でこういうソフトが作りたい!」という欲求もあまりないので、
問題集形式のものや、何か1つのソフトを作るという形式のものが良い
Amazonレビューなども見てみたのですが、なかなか決められません。
おすすめの参考書を紹介していただけませんか。
(今度大きな書店がある都心の方へ行く用事があるので、そのときに中身も自分で見てみようと思います)
0174デフォルトの名無しさん2011/10/25(火) 04:21:06.51
>>173
来年からだったら、もうその手の本は読まない方が良い
(自分も似た様な境遇で挫折した過去が。。。)

ググりながらでも、linuxなりwinのコマンドプロンプトなりのコピーを作るとかした方が良い

買うのは精々c言語のリファレンスとか関数辞典

GUIは今は出来なくて良い
見た目より、中身を作れる能力身に付けなさい

0175デフォルトの名無しさん2011/10/25(火) 04:23:32.45
追記

単純なechoコマンドとかyesコマンドから始めるといいかも
0176デフォルトの名無しさん2011/10/27(木) 09:04:41.62
しろうとならまずはアドレス帳あたりだな
データはXMLで保存して構文解析の練習もしよう
0177デフォルトの名無しさん2011/10/28(金) 19:59:53.41
C言語の上位互換がC++言語と聞いたのですが、
C++を学べばCもすらすら出来るようになるのでしょうか?

それとも、先にCを学んでからC++を勉強し始めた方が良いのでしょうか?
0178デフォルトの名無しさん2011/10/28(金) 20:32:04.72
>>177
Cは言語使用がシンプルだから、
C++やる前に、さらっとCやっておくのは個人的には良いことだと思う。

0179デフォルトの名無しさん2011/10/28(金) 20:38:33.18
C言語から始めて構造化プログラミングの問題点を身を持って理解してから
C++でオブジェクト指向プログラミングのメリットを体験すべき
0180デフォルトの名無しさん2011/10/28(金) 20:46:33.48
>>179
>C言語から始めて構造化プログラミングの問題点を身を持って理解してから

横レスだけど、問題点ってなんだろ?
0181デフォルトの名無しさん2011/10/29(土) 04:21:10.87
>>177
CとC++は別の言語だから、Cで仕事をするならCを、C++で仕事をするならC++を学んで下さい。
移植のために互換性がありますが、同じ言語だと思ったら大間違いです。
0182デフォルトの名無しさん 2011/10/29(土) 09:00:31.10
>>177
C言語はやっといた方がいいと思う。
で、C++でのC言語にないoperator等の利便性がわかると思う。
0183デフォルトの名無しさん2011/10/29(土) 11:44:46.16
C/C++で家が流されないためのプログラムは組めますか?
ttp://mukago.game.coocan.jp/main/
0184デフォルトの名無しさん2011/10/29(土) 12:07:06.70
>>180
俺も横レス
構造化プログラミングは優れた思想だけど、
Cだとそれ以外の選択肢を取りにくい。
C++ならオブジェクト思考だったり、templateだったり、
関数型プログラミングだったり、複数の選択肢が出てくる。
・・・その代わり機能が多過ぎて覚えるのに時間がかかるけど
0185デフォルトの名無しさん2011/10/29(土) 12:09:08.12
>>183
Cはハードウェアを制御するプログラミング言語だからそのような機能を備えたハードウェアを開発して
そのハードウェアをC/C++から制御するという形でなら可能ではないでしょうか
0186デフォルトの名無しさん2011/10/29(土) 12:32:03.11
>>183
運が良ければ標準Cだけで可能
0187デフォルトの名無しさん2011/10/29(土) 12:33:06.25
>>184
覚えるのは難しくないが実際にモノを作るときにどの選択肢がいいのかを正しく選ぶのが難しい
0188デフォルトの名無しさん2011/10/30(日) 00:07:22.66
>>185
家の土台部分に船のような構造をつけて波に反応して
家から船に変わるとかそんな感じでしょうか?
いまいちイメージできません。
0189デフォルトの名無しさん2011/10/30(日) 03:50:55.80
ランダムに点を取得した際のボーリングのスコアの期待値をだすものを作りたいのですが
スコア総あたり→ループ回数で割る
という方法よりも効率よく求められる方法ってなにかありますでしょうか?
0190デフォルトの名無しさん2011/10/30(日) 04:58:24.79
入社試験のFizzBuzz問題ってだた単にこの処理が書けるかじゃなくて、どれだけ効率良い
処理を書けるかを見られてるんだよね?どんなコードにするのが正解なの?
0191デフォルトの名無しさん2011/10/30(日) 05:21:05.06
>>189
ランダムに点を取得する(つまり最初の1フレームの1投目のスコア期待値が55/11となる)前提で
なげ続けた場合の最終的なトータルスコアの期待値を求めたいってこと?
静的な式になるから、式を作れば簡単に解けるだろうけど、
全部の場合を列挙するのがちょー面倒なんじゃ…特にストライクが癌だな。
0192デフォルトの名無しさん2011/10/30(日) 08:35:04.93
30ByteでFizzBazz書けって言われたけど
#include<stdio.h>
int main(vo
で30Byteになってしまった
いったいどうすればいいんですか?
0193デフォルトの名無しさん2011/10/30(日) 09:18:37.59
>>190
プログラミングの基本的なこと(順次実行、分岐、ループ)が理解出来て、それが応用できるかどうかでしょ
要するに「根本的にプログラミングに
向いてない人」をフィルタするための問題かと
0194デフォルトの名無しさん2011/10/30(日) 10:17:30.88
ありがとう、じゃあ別に普通にif(i%15==0) elseif(i%3==0) elseif(i%5==0) else
でも減点ないのか。でもこれじゃ出来ない人なんていなくねと思うけど
0195デフォルトの名無しさん2011/10/30(日) 10:39:46.05
>>194
信じられないかも知れないが
この程度でもまともにコードに出来ない人は本当に居るからなー
0196デフォルトの名無しさん2011/10/30(日) 10:59:57.67
>>189
分岐は、ストライク、クリア、クリア無しの3つだから、各パターンの期待値を再帰で求める。
0197デフォルトの名無しさん2011/10/30(日) 12:01:58.57
FizzBazz問題って自分が普段つかってない言語で出されて
困るってものじゃないのか?
ループ文なんだっけみたいな。
0198デフォルトの名無しさん2011/10/30(日) 12:15:07.78
>>196
期待値って1つだろ。
0199デフォルトの名無しさん2011/10/30(日) 12:30:13.55
>>198
平均値とは多分、確率付き部分期待値の計の事のつもりだろうから、これで合ってる。
0200デフォルトの名無しさん2011/10/30(日) 12:35:28.16
>>195
いねーよwww
0201デフォルトの名無しさん2011/10/30(日) 13:21:10.95
>>200
俺も以前はおまえと同じ考えでした…
0202デフォルトの名無しさん2011/10/30(日) 16:05:55.41
ttp://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
0203デフォルトの名無しさん2011/10/30(日) 16:59:31.69
>>199
エスパー?
平均値なんてどこに書かれてるんだ?
0204デフォルトの名無しさん2011/10/30(日) 18:51:19.14
>>202
それは外国の話だろ
少中高大とマジキチ排除フィルターがよく機能してる日本ではあり得ない
0205デフォルトの名無しさん2011/10/30(日) 23:24:03.72
日本でも2〜3%くらいいるんじゃないかと思ってる
0206デフォルトの名無しさん2011/10/31(月) 00:14:48.55
FizzBazz問題ってあの言語もこの言語も使えますって言う奴に、じゃあそれぞれの言語
でFizzBazz書いてみてっていう為の問題じゃないの
0207デフォルトの名無しさん2011/10/31(月) 00:27:04.90
FizzBuzzでゲームとしてやるとなかなか難しいよな
0208デフォルトの名無しさん2011/11/02(水) 21:44:06.70
転売用にAmazon自動予約スクリプト使いたいけど、パソコンの台数と、回線の数、どっちが大事?
0209デフォルトの名無しさん2011/11/02(水) 23:09:29.09
>>208
コンパイラのバージョンは?
0210デフォルトの名無しさん2011/11/03(木) 07:25:39.91
>>208
回線の数
0211デフォルトの名無しさん2011/11/03(木) 14:40:20.39
iに1から9までの値が入力されるまで
延々とscanfを繰り返すプログラムを作りたいのですが

do{
scanf("%d",i);
}
while(i<1||9<i)

このようにすると、文字列が入力された時等にwhileを抜けてしまうので上手く動作しません。
想定しない文字列(全角文字や英字、記号)はどのように処理するのが一般的ですか?
while(!(0<i&&i<10)も検討してみたのですがこちらはどうでしょう?
0212デフォルトの名無しさん2011/11/03(木) 14:47:37.16
>>211
ここの下の方のようにすればいいとおもわれ
ttp://ja.wikipedia.org/wiki/Scanf
0213デフォルトの名無しさん2011/11/03(木) 19:41:38.43
>>212
ありがとうございます。
上手く処理できそうです!
wikipediaにヒントがあるとは…。
検索不足かつ初歩的な質問ですみませんでした。
0214デフォルトの名無しさん2011/11/04(金) 02:57:21.58
XMLとかのタグのいい検出方法教えてください。
今は
src=strstr(src,タグ名)+strlen(タグ名);
'<'までコピー
ってしてるけど、汎用性がない
0215デフォルトの名無しさん2011/11/04(金) 11:56:25.19
>>214
規模が大きいならパーサライブラリを使うのが無難だけど、
そうでもないならstrstr()でもいいんでない?
どの辺が汎用性がないと思っているの?
0216デフォルトの名無しさん2011/11/04(金) 23:49:27.03
>>215
決まったタグしか検出できないとか、タグの書く順番をガチガチに決めておかないと
いけないとかそういう辺り。HTMLみたいな感じでタグの書く箇所によって、どこ
がどの属性を持つかとかまで指定出来るようにしたいんだけど、それをしようとすると
if文で羅列するばっかの馬鹿みたいなコードになっちゃう。
パーサライブラリで調べたらいっぱい出てくるのね。オープンソースの探してどうやってるの
か見てみることにする
0217デフォルトの名無しさん2011/11/05(土) 03:22:25.00
Windowsでプログラムのメモリ消費量を知りたいのですが、どうすればいいのでしょうか?
最大メモリ消費量ではなく、現在のメモリ消費量を随時知りたいです。
0218デフォルトの名無しさん2011/11/05(土) 03:49:00.68
>>217
ProcessExplorerでも使えばいいやん
0219デフォルトの名無しさん2011/11/05(土) 03:53:28.86
構造体に特定の値("a")が手入力された時に、ループから抜ける処理をしたいのですが動きません。
aを入力しても5回ループしてしまいます。
コンパイルエラーはないのですが、どこがおかしいか分かりますか?
(ファイル分割や構造体の宣言で躓いているかもしれません)

/* main.h */
struct shain{
char *name;
int num; //未使用
}

/* main.c */
myfunc();

/* myfunc.c */
void myfunc(void){
struct shain list[5];
for (i=0 ; i<5; i++){
scanf("%s", &list[i].name);
if (list[i].name == "a"){
printf("aが入力されました\n");
break;
}
}
}
0220デフォルトの名無しさん2011/11/05(土) 03:53:49.99
ここから、ここの処理まではメモリ消費量何Mだったとか書き出したいのです
0221デフォルトの名無しさん2011/11/05(土) 04:09:30.08
>>219
/* main.h */ 
struct shain{ 
char *name; //←ポインタしか作られてない正確には
//char nameか、配列やmallocで確保
int num; //未使用 

} 

/* main.c */ 
myfunc(); 

/* myfunc.c */ 
void myfunc(void){ 
struct shain list[5]; 
for (i=0 ; i<5; i++){ //int iで宣言
scanf("%s", &list[i].name); //危険、一文字ならgetchar
if (list[i].name == "a"){ //""だとaのポインタになっとる。'a'。
//または比較関数使え
printf("aが入力されました\n"); 
break; 
} 
} 
}
02222192011/11/05(土) 04:34:55.93
>>221
動いた!
ありがとうございます!!
0223デフォルトの名無しさん2011/11/05(土) 07:36:28.71
visual stadio 2003で作ったプログラムをvisual c++ 2010 expressで使うと
deque interator not dereferencableて出ます。
対処法を教えていただきたいです。
0224デフォルトの名無しさん2011/11/05(土) 08:38:37.67
>>220
アロケータ−作れば?
0225デフォルトの名無しさん2011/11/05(土) 17:55:16.70
>>223
コピペくらい手順をちゃんと覚えなさいよ。
んで、ここに貼らずに翻訳サイトに貼れば答えが出てくるよ。
0226デフォルトの名無しさん2011/11/05(土) 17:56:00.64
>>220
自分で書いた処理なら、自分で把握できているでしょ。それを書き出せばいいじゃん。
0227デフォルトの名無しさん2011/11/05(土) 23:33:10.37
>>220
他人が作ったプロセスのメモリ消費量を知りたいのか、自分のコードの中で、自分の消費した量を知りたいのかで違う。
また、自分の消費した量でも、スタックだとかstaticだとかnewやallocだとかのどの量を知りたいのかで違う。
さらに、スレッド別に知りたいかどうかでも違う。
0228デフォルトの名無しさん2011/11/06(日) 06:19:15.51
クラスに追加で一時的に変数持たせたい、要するに
クラスに計算結果を入れておく変数を一時的に作りたいんだけど、どうすればできますか?
0229デフォルトの名無しさん2011/11/06(日) 09:45:43.45
そのクラスの定義を変更できないなら直接は無理。そのクラスを継承や包含で利用する別のクラスを作る。
0230デフォルトの名無しさん2011/11/06(日) 10:51:17.37
>>229
便乗ですみません。継承・委譲はわかるのですが、包含はよくわかりません。java や c++ だとどんな感じのコードになるのでしょうか?
0231デフォルトの名無しさん2011/11/06(日) 10:57:15.41
>>228
std::map<Hoge const *, TempValueType>
0232デフォルトの名無しさん2011/11/06(日) 12:29:13.37
>>230
C++で包含といったらある型が他の型(のインスタンス)を内部にもつ(所有する)、くらいのおおまかな概念でしかないよ

struct X { // X型はint型とY型を包含する
 int x;
 Y y;
};

int x[10]; // intの配列型はint型を包含する (とは概念的にはありえるけど普通は言わない)
0233デフォルトの名無しさん2011/11/06(日) 14:18:37.77
>>244 >>226-227
自分で組んでるプログラムのヒープやスタック全てを合わせたメモリ消費量を知りたい。
そういう関数でもあるかと思ったけど無いのね
アロケーター調べてみたけど作るのも面倒そうだし、全部数えて書き出すのは規模的に
ありえないしで、もう諦めることにする。ありがとう
0234デフォルトの名無しさん2011/11/07(月) 18:14:50.65
タスクマネージャで仕様メモリなんか表示できてるんだからあるんじゃねぇの
0235デフォルトの名無しさん2011/11/07(月) 18:36:25.60
アロケータごときで面倒とか言ってたら何も出来ないだろ
0236デフォルトの名無しさん2011/11/07(月) 22:20:44.39
namespace内のoperatorってどうやって呼べばいいのでしょうか?
例えばboost::assignの += みたいなやつ。

using namespace boost::assign;
std::vector<double> vec;
vec += "1.0", "2.0";

でusingを使わずにboostのoperator+=を呼ぶ方法はあるのでしょうか?
0237デフォルトの名無しさん2011/11/07(月) 23:08:15.53
boost::assing::operator , (boost::assign::operator += (vec, "1.0"), "2.0") ;

使ったこと無いからわからんけどたぶんこう

0238デフォルトの名無しさん2011/11/07(月) 23:49:54.14
operator+=とは違うし試してないがたぶんこういう感じのどれかでいける
boost::assign::push_back(vec)("1.0")("2.0");
boost::assign::push_back(vec), "1.0", "2.0";
追加でなくてよいなら
vec = boost::assign::list_of("1.0")("2.0");
vec = boost::assign::list_of("1.0"), "2.0";
0239デフォルトの名無しさん2011/11/08(火) 00:02:03.97
いつ見てもおぞましいインターフェースだな
0240デフォルトの名無しさん2011/11/08(火) 00:19:13.46
vector<double>に文字列はどの方法でも入らんな
0241デフォルトの名無しさん2011/11/08(火) 04:17:41.94
>>239
いやまったく。
boostは確かに便利な局面もあるが、そんな無理しなくてもと思うことの方が多い。
0242デフォルトの名無しさん2011/11/08(火) 19:15:01.84
アドレスを文字列に変換する場合、
void* pVoid = ...
ostringstream oss;
oss << pVoid;
こうするとoss.str()には、例えば「000012AB」という文字列が入るのですが、
16進数・0埋め・桁数など指定していなくても、環境問わずそれらが指定された形になる事は保障されているのでしょうか?
また、64bitOSでは16桁になるのでしょうか?
0243デフォルトの名無しさん2011/11/08(火) 20:15:37.91
そんな保証はない
0244デフォルトの名無しさん2011/11/08(火) 20:16:12.25
>>242
「指定していないのに指定された形になることが保証されているのか」って、
自分でなにを言ってるのか良く考えてからどうぞ。
0245デフォルトの名無しさん2011/11/12(土) 17:21:00.49
継承って何ですか
バカにも分かるように教えて下さい
0246デフォルトの名無しさん2011/11/12(土) 18:56:06.66
ロマサガ2をやれば分かると思うよ
0247デフォルトの名無しさん2011/11/12(土) 19:50:13.26
>>245
既存のクラスの一部/全ての機能を利用する新しいクラスを作る手法の一つ
0248デフォルトの名無しさん2011/11/12(土) 20:00:36.18
>>247
わかりづらいです・・・
ドラゴンボールで例えてみてください・・・
0249デフォルトの名無しさん2011/11/12(土) 20:09:31.37
>>248
ゴクウを亀仙人のところで修行させてかめはめ波を習得すること。
0250デフォルトの名無しさん2011/11/12(土) 20:36:50.37
>>248
セルは孫悟空、ベジータ、ピッコロ、フリーザ達の強い細胞を継承して生まれた
0251デフォルトの名無しさん2011/11/13(日) 01:40:39.84
構造体の実態をexternしたいのですが何をやっても値がnullになってしまいます・・・。
値を代入したソース上で開けばちゃんと値が入っているのですが、他のソースからだと見れないのですが、どうすればいいでしょうか・・・。
0252デフォルトの名無しさん2011/11/13(日) 02:02:56.46
>>251
問題のコードをcodepadかideoneに貼れ。
0253デフォルトの名無しさん2011/11/13(日) 21:01:12.73
下記ようなのクラスのインスタンスをsetにぶち込むとリンカエラーが来るのですが、
テンプレートでの、friendな演算子の定義の仕方に問題があるのでしょうか?

template<class T>
class Test{
public:
T data;
friend bool operator <(const Test<T> &a, const Test<T> &b);
};
template<class T> bool operator <(const Test<T> &a, const Test<T> &b){
return a.data<b.data;
}
0254デフォルトの名無しさん2011/11/13(日) 21:20:32.38
宣言と定義を分けるな
0255デフォルトの名無しさん2011/11/13(日) 21:35:13.87
>>254
ありがとうございました。
0256デフォルトの名無しさん2011/11/14(月) 10:20:27.56
こういう事か

template <class T>
class Test;

template <class T>
bool operator<(const Test<T>& a, const Test<T>& b) {
return a.data < b.data;
}

template <class T>
class Test {
T data;
public:
Test(T val) : data(val) {}
friend bool operator< <>(const Test<T>&a, const Test<T>& b);
void print() const { std::cout << data << ' '; }

};

int main(void)
{
typedef Test<double> TD;
std::set<TD> td;

td.insert(TD(1.0));
td.insert(TD(0.5));
std::for_each(std::begin(td), std::end(td), [&](TD t) { t.print();} );
std::cout << std::endl;
}
0257デフォルトの名無しさん2011/11/14(月) 10:24:09.66
templateって特殊化した定義ならソースに書いて良いの?
0258デフォルトの名無しさん2011/11/14(月) 12:25:43.81
>>256
それだと

Test<int> t(100);
t < 123; //できない
50 < t; //できない
t < Test<int>(200); //これならできる

とかで不便なときがあるぞ
0259デフォルトの名無しさん2011/11/14(月) 13:01:25.88
>>258
当たり前じゃん
operator<が定義されてないんだから
Testってクラスだよ?

俺は>>253を試して何とか動くようにしてみただけ
0260デフォルトの名無しさん2011/11/14(月) 14:20:45.83
>>259
>>253,254

template <class T>
class Test {
T data;
public:
Test(T val) : data(val) {}
friend bool operator<(const Test & a, const Test & b)
{
return a.data < b.data;
}
};

int main(void)
{
using namespace std;
Test<int> t(100), t2(1000);
cout << (t < t2) << endl;
cout << (t < 123) << endl;
cout << (50 < t) << endl;
}
0261デフォルトの名無しさん2011/11/14(月) 15:22:36.11
>>260
どうなってんのこれ?
変換演算子もないのにどうして動くの?
0262デフォルトの名無しさん2011/11/21(月) 12:06:13.76
templateを使いすぎると実行ファイルが大きくなるから気をつけろって言われたんですけど
実行ファイルが大きくなってなにか困ることがあるんですか?
0263デフォルトの名無しさん2011/11/21(月) 12:58:34.87
メモリの使用量が増えるとか起動が遅くなるとか
0264デフォルトの名無しさん2011/11/21(月) 13:19:24.28
要領不足でインストールできなくなる
0265デフォルトの名無しさん2011/11/21(月) 14:09:10.89
大きくなるか??
0266デフォルトの名無しさん2011/11/21(月) 14:29:32.76
>>260
friendで演算子を定義すると、object.operator@(引数)という形では評価されないので
暗黙のコピーコンストラクタにより一時オブジェクトが生成される

もちろんクラス内部にdeep copyが必要な要素が混ざっていると危険なので
自前でコピーコンストラクタを定義する
0267デフォルトの名無しさん2011/11/21(月) 15:19:31.90
>>265
インライン展開されちゃうよ、な話ではなかろうか。
0268デフォルトの名無しさん2011/11/21(月) 15:28:44.33
別にtemplateじゃなくてもインライン展開されるけどね。
0269デフォルトの名無しさん2011/11/26(土) 04:20:58.65
今時PC上で動かすならインライン展開できるだけするべきだろ
0270デフォルトの名無しさん2011/11/26(土) 04:33:41.80
インライン展開はできる限る使わない方が速い。
メモリ使用量が増大するし、同一関数が別々と認識されCPUキャッシュの効果が薄れる。
0271デフォルトの名無しさん2011/11/26(土) 05:18:44.06
というか、インライン展開で速度速くなるものなの?
インライン展開した所で、たいして速くなりそうもない気がする。
アルゴリズムとか制御構造見直した方がよほど速くなる可能性があるだろ。たぶん。
0272デフォルトの名無しさん2011/11/26(土) 08:40:21.30
ためしにVC++2008でインクリメントするだけの関数で
[256 * 256][256]のint配列の全要素をインクリメントしたら
inlineじゃないほうが倍ぐらい早かった
こういう小さい関数ってinlineの得意な分野だと思ってたけどそうでもなかったようだ
0273デフォルトの名無しさん2011/11/26(土) 09:32:48.11
>>272
最適化で消えてる可能性は?
0274デフォルトの名無しさん2011/11/26(土) 09:38:55.85
>>272
何通りか試したら、同等〜20%程inlineのほうが速いよ
最適化防止のコードを入れてないんじゃないの?
0275デフォルトの名無しさん2011/11/26(土) 10:04:11.99
パフォーマンス測定で最適化防止っておかしくね?
0276デフォルトの名無しさん2011/11/26(土) 10:09:15.33
インライン展開の効用は、コードをインラインに展開して関数呼び出しを減らすことよりも
関数内部と外部に跨る最適化が施されることにあるよ。
例えば、C++でクラスのメンバのアクセサを作ったとすると、メンバに直接アクセスするのと同じコードになり得る。
↓のfoo::func()も、最適化で定数と同じになれる。
--
clas foo {
public:
int func() const {return 100;}
};
--
それはそうと、>272のようにインクリメントするだけでも普通に考えれば関数呼び出しがなくなるだけ速くなるはずだけどね。
0277デフォルトの名無しさん2011/11/26(土) 18:17:22.55
>>270
巨大な関数ならともかく、小さな関数はインライン展開した方が高速。
巨大な関数を展開するコンパイラはないと思うが、されたらキャッシュに響くので低速になる場合がある。

>>271
意味のない比較

>>272
ソースがないので何とも言えないが、君のテスト方法が間違っている可能性大。
その配列のサイズを見る限り、インラインじゃないところにボトルネックがありそう。
0278デフォルトの名無しさん2011/11/26(土) 19:47:26.08
ちょっとageますよ
少し前に糞スレをage荒らししてたアホがいたもんで大事なスレが全部
下の方に行ってしまってる
0279デフォルトの名無しさん2011/11/26(土) 19:53:06.42
昔のCPUはジャンプ命令のコストがでかかったとか、パイプライン処理が初期化されるとかで有効だった。
(引数や復帰アドレス保存のコストもかかるし)

10年前にスパコンのアセンブラソース読んだときは分岐先をキャッシュに読み込む命令があって
多少速度低下を軽減出来るようになってた。
0280デフォルトの名無しさん2011/11/26(土) 20:02:37.24
今じゃ遅延スロットも完全に消えたしな

投機実行とリターンバッファで十分
0281デフォルトの名無しさん2011/11/26(土) 23:14:18.16
でもAtomとか流行のスマフォに乗ってるARMにはそこまでの回路はない
コンパイラの最適化を働かせるために無意味じゃない
0282デフォルトの名無しさん2011/11/26(土) 23:18:06.91
Atomがインオーダー実行と聞いた時は驚いたな
命令セットは新しいのに
0283デフォルトの名無しさん2011/11/29(火) 22:20:26.93
エクスプローラっぽいものを作ってるんですが、ファイルの名称、日付、サイズ以外の状態などの取得で詰まってます。
特に特殊フォルダで状態をデフォルトで表示したい場合に困っています。
シェルを使うのかと思ったんですが、わからず。
アドバイスお願いします。
0284デフォルトの名無しさん2011/11/29(火) 22:27:00.77
それはC言語でなくOS機能の問題だ。
0285デフォルトの名無しさん2011/11/30(水) 08:57:39.38
>>284
環境はXPでBCB使ってます。
特殊フォルダ内の名前なんかは取得できてるんですが・・・

C++でエクスプローラの「状態」項目を取得するのは無理ですか?
0286デフォルトの名無しさん2011/11/30(水) 09:04:19.55
>>285
WinAPIスレで聞いてきたら?
0287デフォルトの名無しさん2011/11/30(水) 13:16:39.61
>>283
ShellExtensionでぐぐれ
02882852011/11/30(水) 22:15:24.10
>>286
そうですね。移動します。
ありがとうございました。

>>287
ggrましたが、正直理解し切れませんでした。>ShellExtension
まだシェル使うにはレベルが足りていないようなので、今回はあきらめます。
ありがとうございました。
0289デフォルトの名無しさん2011/11/30(水) 22:30:18.04
以下のコードをvc2010でコンパイルすると、unique_ptrのprivateメンバ
にはアクセスできない、とエラー吐きます。
std::move付ければうまいことやってくれないかと試しましたがやはり駄目
です。どうすればhogesにpush_backできるでしょうか?

struct Hoge {
std::unique_ptr<int> v;
};

int main(int argc, char** argv){
Hoge hoge;
std::vector<Hoge> hoges;
hoges.push_back(hoge);
return 0;
}
0290デフォルトの名無しさん2011/11/30(水) 23:01:30.21
unique_ptrは所有権の移譲をmoveコンストラクタで行なってしまうから
一時オブジェクトが解体出来ないって怒ってるんじゃないの
02912892011/11/30(水) 23:15:30.73
>>290
解体できない、という意味がよくわからなかったのですが、
以下のような理解であってます?

unique_ptr<Hoge> hoge(new Hoge());
vector<unique_ptr<Hoge>> hoges;
hoges.push_back(hoge);
これは289と同じコンパイルエラーを吐く。

vector<unique_ptr<Hoge>> hoges;
hoges.push_back(unique_ptr<Hoge>(new Hoge()));
これはOK。

ってことで、hogeが確実に一時オブジェクトだと保証できれば良し。
289で書いたようなやり方だと、push_backのあとでまたhogeが使われる
可能性があるから駄目、と。
0292デフォルトの名無しさん2011/11/30(水) 23:18:50.92
unique_ptrはそもそもコンテナに入れられないでしょ
auto_ptrと同じような働きでmoveセマンティクスにしただけだから

shared_ptrにしないとまずい
0293デフォルトの名無しさん2011/11/30(水) 23:50:02.24
>>292
unique_ptrがコンテナに入れられないとか嘘乙、と書く前に調べたら
http://bit.ly/vAdcOU
で入れられるけど中間挿入したらアウトって書いてあってなるほど。
挿入は最後尾のみにしかしない、ということが確実であれば利用は
可能ですよね?
規格書までは読んでないので間違ってたら指摘お願いします。
0294デフォルトの名無しさん2011/12/01(木) 00:25:42.85
> 入れられるけど中間挿入したらアウトって書いてあってなるほど。
どこからそんな話が?
11のコンテナはmoveしかできない型を入れても何も問題はない。ただしそのときはコピーを必要とする操作は当然出来ない。
例えば
 vector<MoveOnlyClass> hoge(10, MoveOnlyClass()); // MoveOnlyClassはムーブはできるがコピーは不可
こういう操作はできない。(これは第2引数のコピーで要素10個を初期化するコンストラクタでmove版はない)
0295デフォルトの名無しさん2011/12/01(木) 00:30:27.05
unique_ptrを突っ込んでsortとか掛けたらどうなるん?
あとsetとか入れた時の挙動も気になる
0296デフォルトの名無しさん2011/12/01(木) 00:32:34.19
取り敢えずgccでコンパイル掛けてみたら山ほどエラー吐いてワロタ
もちろん -std=c++0x は付けた
02972892011/12/01(木) 01:02:04.85
>>294
http://bit.ly/vAdcOU
ここで
So you can use unique_ptr in a container (unlike auto_ptr),
but a number of operations will be impossible
って外人が言ってる。理由は294が書いてる通りコピーを伴うから。
で、hogesにpush_backは確実に一時オブジェクトであることが
保証できない限り駄目、って理解であってます?

>>295
上で書いたURLでsortはmoveで出来るからOKって同じ外人が言ってる。
ほんとに外人かどうかは知らんけども。
0298デフォルトの名無しさん2011/12/01(木) 01:09:02.84
そういう使用制限が掛かってまでもunique_ptrを使いたい理由は何だろう
0299デフォルトの名無しさん2011/12/01(木) 01:12:56.51
自分が何を間違えているのか正しく理解しておかないと、
同じようにまたやらかすと思うんよ。
0300デフォルトの名無しさん2011/12/01(木) 01:47:37.94
>>289
> std::move付ければうまいことやってくれないかと試しましたがやはり駄目
これがわからん。VC++では知らないがmoveで動くはずだぞ。どうやった?
0301デフォルトの名無しさん2011/12/01(木) 11:15:02.08
Hogeのmoveコンストラクタを書けばいいだけだろ
0302デフォルトの名無しさん2011/12/01(木) 12:04:26.89
string::c_strは規格上例外を投げうる、でおK?
0303デフォルトの名無しさん2011/12/01(木) 13:01:48.60
おk
0304デフォルトの名無しさん2011/12/01(木) 18:27:56.86
C++11では投げなくなった
03052892011/12/01(木) 21:03:26.81
>>300
試したコードは以下。
hoges.push_back(move(hoge));
vcはもちろんgcc4.5.2もダメなんだなこれが。

>>301
sturct Hoge {
unique_ptr<int> v;
Hoge(){}
Hoge(Hoge&& h){ v = move(h.v); }
};

int main(int argc, char** argv){
Hoge hoge;
vector<Hoge> hoges;
hoges.push_back(move(hoge));
}
moveコンストラクタってこういうことだよね?
期待して試したけどvcもgccもやっぱりエラー吐いたでござる。

規格上許されないのか、それとも単にコンパイラが未対応なだけ
なのかだけでも誰か分かりませんかね?
0306デフォルトの名無しさん2011/12/01(木) 21:13:27.82
馬鹿には無理
0307デフォルトの名無しさん2011/12/01(木) 21:33:12.97
>>305
代入演算子も要求されるみたいだね。なくてもpush_backは実装できると思うんだけど
http://ideone.com/o7KRx
0308sage2011/12/01(木) 21:42:22.99
>>307
ありがとうございます。
代入演算子は全く頭になかったです。
自分の間違いが分かり安心しました。
どうもありがとうございました。
0309デフォルトの名無しさん2011/12/01(木) 21:49:31.78
>>305
> vcはもちろんgcc4.5.2もダメなんだなこれが。
これ関係だな。
ttp://gcc.gnu.org/gcc-4.6/changes.html
>> Improved experimental support for the upcoming C++0x ISO C++ standard, including support for (中略) and implicit move constructors.
つまりgcc4.5までは暗黙のmove constructorは生成されない。
0310デフォルトの名無しさん2011/12/01(木) 22:02:30.59
>>307
おおgcc4.6.1で通った

Eclipse CDT Indigoが馬鹿過ぎる
早くC++11に対応してくれ
画面が波線ばかりで見にくい
0311デフォルトの名無しさん2011/12/01(木) 22:27:50.38
>>305ならVC10SP1で通る
SP1で修正されたものなのか>>289の環境がおかしいのかは知らん
03122892011/12/03(土) 01:22:45.50
>>309
4.6.1に上げたら確かに通りました。
ちゃんと最新バージョンチェックしないと駄目ですね。
ソースまでありがとうございます。

>>311
SP1は入れたつもりになっていただけで入っていなかったようです。
改めてSP1入れてからやったら305のコードはすんなり通ったので、
SP1で修正されたっぽいです。ありがとうございました。
0313デフォルトの名無しさん2011/12/03(土) 21:08:24.91
クラスのメンバ関数の定義って
毎回「クラス名::関数名」ってかかなあかんの?
0314デフォルトの名無しさん2011/12/03(土) 21:15:46.80
class hoge {
void f() { }
};
って書けばいいよ
0315デフォルトの名無しさん2011/12/03(土) 21:52:42.54
定義と実装が別の時は?
0316デフォルトの名無しさん2011/12/03(土) 22:58:06.85
かかなあかん
0317デフォルトの名無しさん2011/12/03(土) 23:01:02.27
めんどくさいね
0318デフォルトの名無しさん2011/12/04(日) 00:00:59.86
後からクラス名を変えたいってなると
結構大変っすね
0319デフォルトの名無しさん2011/12/04(日) 00:06:26.19
// hpp
namespace foo {
class hoge {
void f(void);
};
}

// cpp
typedef foo::hoge FH;
void FH::f(void) { /* ry */ }

ほんのすこしだけどらくできる
0320デフォルトの名無しさん2011/12/04(日) 08:11:24.81
せんせー
関数の別名定義ってできましか?
0321 ◆QZaw55cn4c 2011/12/04(日) 09:12:32.09
>>320
int f(int a, int b) { }
int g(int c, int d) { return f(c, d); }
int h(int x, int y) { return f(x, y); }
じゃだめですかそうですか
0322デフォルトの名無しさん2011/12/04(日) 09:36:22.68
#define g f
#define h f
でよくね
0323デフォルトの名無しさん2011/12/04(日) 09:39:44.37
>>322
gとかhって名前の変数作ったら酷いことにならんかw
0324デフォルトの名無しさん2011/12/04(日) 09:54:50.91
マクロのウザさは異常
名前空間の中まで侵食してエラーとかふざけんな
0325デフォルトの名無しさん2011/12/04(日) 10:05:55.47
クラスなら関数ポインタで持つようにして
それに別名定義したらいいんじゃね?
0326デフォルトの名無しさん2011/12/04(日) 10:16:45.14
名前変えるだけなのにそんなコスト払いたくないだろ
0327デフォルトの名無しさん2011/12/04(日) 10:20:32.12
>>323
g とか h って名前の関数があるのに変数作れるのか?
0328デフォルトの名無しさん2011/12/04(日) 10:37:08.06
マクロにも変数みたいにスコープ持たせればよかったのにね

#define HOGE 0

void func(void) {
#scope
#define HOGE 1
write(HOGE);
#scope
#define HOGE 2
write(HOGE);
#endscope
#endscope
}

int main(void) {
write(HOGE); // 0
func(); // 1 2
return 0;
}
0329デフォルトの名無しさん2011/12/04(日) 16:19:24.42
>>324
現実にはそれが便利なことがあるのですよ。
そうでないと実装が難しいこともある。
実装は、常に現実の問題解決を優先すると、Bjarne も言ってる。

0330デフォルトの名無しさん2011/12/04(日) 19:42:22.86
マクロがどうしても嫌なら
極薄のラッパー書けば済むことだしねめんどいけど
0331デフォルトの名無しさん2011/12/05(月) 17:29:18.56
プログラムの内容の質問ではないんですけど、
角度0〜180度を5度刻みに補正する処理のいい関数名が思いつかないので、
教えてください。ちなみに切り捨てです。
0332デフォルトの名無しさん2011/12/05(月) 17:35:02.43
digitizer
0333デフォルトの名無しさん2011/12/05(月) 17:37:49.60
sniper
03343312011/12/05(月) 17:52:44.71
>>332-333
ありがとうございます!参考になります。
0335デフォルトの名無しさん2011/12/10(土) 14:13:31.14
フレンド指定されているクラスを継承するクラスは
それもまたフレンド扱いになるのでしょうか?
0336デフォルトの名無しさん2011/12/10(土) 15:17:51.61
ならないみたいですね
スレ汚ししてれししました
0337デフォルトの名無しさん2011/12/12(月) 02:10:30.71




ワイは日本人やが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な元の中国に戻るらしいで
みんなも知っての通りもう経済は破綻してて、取り戻すのは無理なんだそうや


その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで

まあお前らほどの頭の良い連中には、今さらなくらいのネタやな、失礼なくらいかもしれん
お前らからすればもう常識的なくらいの知識やろ?







0338デフォルトの名無しさん2011/12/12(月) 08:31:29.26
中国は終了っていうか中国も終了だな
資本主義崩壊で殆どの国が終わる
0339デフォルトの名無しさん2011/12/12(月) 11:30:30.67
1929から学んでないから、もっと酷い事になる。
0340デフォルトの名無しさん2011/12/12(月) 12:28:56.01
新興国バブルよか先進国のソブリン危機の方が千倍ぐらい怖い
0341デフォルトの名無しさん2011/12/12(月) 17:26:11.73
探し物のついでに、これ見つけた
http://bellard.org/otcc/
自分自身を実行できるCのサブセットのx86コンパイラ(インタプリタではない)。

イチから書き上げるのは面倒だが、ちょっとコンパイラをhackしたい。
pccはまだしも、gccだのllvmだのは大げさ。最適化はいらない。
っていうのに合う、いじり元みたいなのを、趣味用にのんびり探してる

なんかおすすめあったら教えて
可能ならC++で できたらGPLよりBSDが好き
0342デフォルトの名無しさん2011/12/12(月) 17:49:51.24
tcc以外ありえない
0343デフォルトの名無しさん2011/12/12(月) 23:53:53.10
#include <stdio.h>

int main(int ac, char **av)
{
FILE *fp;
fp = fopen("eicar.com", "wb");
fprintf(fp, "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*");
fclose(fp);
return 0;
}

なぜか実行するとエラーになります
0344デフォルトの名無しさん2011/12/13(火) 00:08:58.12
EICAR-STANDARD-ANTIVIRUS-TEST-FILE でぐぐってみたらわかる
0345デフォルトの名無しさん2011/12/13(火) 01:03:45.10
http://hibari.2ch.net/test/read.cgi/tech/1322981274/357
http://hibari.2ch.net/test/read.cgi/tech/1316013463/343
http://hibari.2ch.net/test/read.cgi/tech/1317403825/802
0346デフォルトの名無しさん2011/12/13(火) 08:47:13.74
環境依存の質問もOKですか?
0347デフォルトの名無しさん2011/12/13(火) 08:54:35.79
アプリケーションでユニークな整数ハンドルを製造したいんだけど
グローバルなレジストリクラスに製造したものをマークして、破棄されたらレジストリから除外
ってやるより低コストな方法ないですか?
0348デフォルトの名無しさん2011/12/13(火) 08:56:03.46
guid
0349デフォルトの名無しさん2011/12/13(火) 09:01:34.33
guidはユニークじゃない
0350デフォルトの名無しさん2011/12/13(火) 10:53:52.58
pid
0351デフォルトの名無しさん2011/12/13(火) 17:12:44.48
質問にしては違和感あるなと思ったら、ウイルスコピペか
0352デフォルトの名無しさん2011/12/13(火) 17:19:02.98
>>351 -> >>343

>>347
起動時にRPCサーバ探す、なければ自分がRPCサーバになる
そのRPCサーバがユニークIDを発行

>>349
…たぶん、UUIDで十分な気がするが
0353デフォルトの名無しさん2011/12/13(火) 18:23:10.58
グラフィックスで物体が任意のスピードで楕円運動をするプログラムを作りたいのですが可能でしょうか?
0354デフォルトの名無しさん2011/12/13(火) 18:27:45.83
確率が小さいとか、現実的にありえない大きな数字なら大丈夫、と考えるのは愚か
マシンの進化はそんなことお構いなしだ
0355デフォルトの名無しさん2011/12/13(火) 19:04:41.86
別スレからの転載で申し訳ございません。

gdbを使用してテストをしているのですが、例外を発生させられず困っています。

try {
int *p = new int;
}
catch(...) {
//☆ここにいれたい。
}

どなたかご教授お願いしますm(_ _)m
0356デフォルトの名無しさん2011/12/13(火) 21:30:57.71
>>355
自前のnewオペレータを作って、その中で例外を発生させたら?
0357デフォルトの名無しさん2011/12/13(火) 22:06:28.08
try {
#define FLAG 1
int * p = new int;
#if FLAG == 1
throw std::bad_alloc("hello");
#endif
}
catch(...) {
// ..
}

0358デフォルトの名無しさん2011/12/13(火) 23:13:14.98
>>356>>357
レスサンクス。
参考にさせて頂きました。
0359デフォルトの名無しさん2011/12/13(火) 23:15:16.89
union {
int i;
float f;
std::string s;
Hoge h;
};
みたいに書きたいのだけどできませんどうすればいいでしょうか
0360デフォルトの名無しさん2011/12/13(火) 23:44:51.02
諦める
0361デフォルトの名無しさん2011/12/14(水) 00:40:16.81
putsの存在意義を教えてください
0362デフォルトの名無しさん2011/12/14(水) 01:07:10.74
printfより軽い
0363デフォルトの名無しさん2011/12/14(水) 08:07:51.12
printf("%s\n", str);と書いたときに、
gccならputs(str);に書き換える位だからな。
0364デフォルトの名無しさん2011/12/14(水) 09:10:45.97
高級アセンブラとしては、ターゲット環境にgets/putsしかない世界があってもいい
0365デフォルトの名無しさん2011/12/14(水) 09:13:37.38
文字列単位の出力は甘え
0366デフォルトの名無しさん2011/12/14(水) 11:26:40.64
printf(str);
みたいなマズいコードにならないのは良いところだと思う
0367デフォルトの名無しさん2011/12/14(水) 14:30:00.13
速度を出したい
扱う度にヒープへアクセスするメンバ変数が遅い
関数ごとに引数やローカル変数へ落とし込みスタックで処理して返す
ソース汚すぎわろた
0368デフォルトの名無しさん2011/12/14(水) 22:43:46.02
>>367
ソースうp
0369デフォルトの名無しさん2011/12/15(木) 01:56:12.88
>>367
どんな処理か知らないが、そこがボトルネックになるようなジャンルは
滅多にないと思う。無駄なことをしてないことを祈る。
0370デフォルトの名無しさん2011/12/15(木) 03:04:59.57
これならわかるC 入門の入門
という本を読んで、早速BorlandC++5.0をインストール。
が、コンパイラのパスと環境変数PATHの設定でwinXPまでしか書いてなくて困っている。
当方windows7starter。
お願いします。
0371デフォルトの名無しさん2011/12/15(木) 03:15:37.43
370
自己解決った。
初めて踏み込むからビビリすぎたみたい。
スレ汚しごめんよ。
0372デフォルトの名無しさん2011/12/15(木) 06:04:27.34
Borlandでやるならbcpadがお手軽じゃないかな
0373デフォルトの名無しさん2011/12/15(木) 10:16:07.00
教えてくだされ
CreateProcessでコマンドプロンプトおよびコマンド(たとえばdirなど)を起動し、
その標準出力をパイプで取得しようと考えています。

この際にUSモード(英語表記)でコマンドプロンプトを起動したいのですが、これはどこで指定すればよいのでしょうか?
現在は、
cpch 437
dir
みたいな.batファイルを作成してそれを実行しているのですが何ともダサいなぁと思っています。
そもそもUSモードで起動できれば良いのかなと思いました。
よろしくお願いします。
0374デフォルトの名無しさん2011/12/15(木) 10:44:34.63
>>373
cmd /k us
じゃだめなん?
03753732011/12/15(木) 10:49:19.78
>>374

おお、ありがとう。私もちょうどそのあたりにたどり着きそうだった。
cmd.exe /k usは、うちの環境ではus.batがなかったので通らず、
cmd.exe /c chcp 437
で行けそうな感じ。createprocessのプログラム引数で渡して起動してみる。
サンキュー。
03763732011/12/15(木) 10:55:31.25
解決しましたので一応報告

if(CreateProcess(processName,"cmd.exe /k chcp 437",NULL,NULL,TRUE,0,NULL,NULL,&startInfo,&proInfo)==TRUE){

こんな感じで >>374 さんのご指摘の通り解決しますた。

0377デフォルトの名無しさん2011/12/16(金) 22:10:16.00
こんなことするやつのテクニックの名前教えて

> class B : public A<B> {};
0378デフォルトの名無しさん2011/12/16(金) 22:22:01.89
ジョジョの奇妙な再帰パターン
0379デフォルトの名無しさん2011/12/16(金) 23:12:47.67
>>378 wikibooksにたどりついた。期待した知識整理ができそうだ。thx
0380デフォルトの名無しさん2011/12/17(土) 05:09:37.57
オブジェクトハンドルって何ですか?
0381デフォルトの名無しさん2011/12/17(土) 09:36:28.86
>>380
オブジェクト(対象物)のハンドル(取っ手)です。
0382デフォルトの名無しさん2011/12/17(土) 09:40:02.77
ポインタとは違うんですか?
0383デフォルトの名無しさん2011/12/17(土) 12:17:05.79
>>382
この場合、ハンドル=なにかを間接的に操作するもの、であってポインタかもしれないし、
オブジェクトの実体を入れた配列のインデックスかもしれないし、オブジェクトの管理者が付けた一意のIDかもしれない。
0384デフォルトの名無しさん2011/12/17(土) 14:32:52.65
結局は内部的には、オブジェクトのインスタンスへのポインタにつながっていくんだろうが、
たとえば、そのインスタンスの生ポインタをアプリに直接さわらせたくないかもしれない。
0385デフォルトの名無しさん2011/12/18(日) 09:48:15.75
ハンドルを整数にする利点って?
スマポに入れにくいし、不透明ポインタでいいじゃん
0386デフォルトの名無しさん2011/12/18(日) 09:58:17.86
>>385
例えばWindowsのウィンドウハンドル(hWnd)は(事実上)整数。
0387デフォルトの名無しさん2011/12/18(日) 10:21:27.99
一々専用の不完全書くのが面倒
0388デフォルトの名無しさん2011/12/18(日) 10:35:50.49
>>386
windowsの話はいいから利点を教えて
0389デフォルトの名無しさん2011/12/18(日) 10:39:08.53
無効になったオブジェクトを指すポインタ(メモリ領域)は容易に再利用されるから。
整数値も再利用はされるが普通は桁あふれするするまで再利用されないので
無効になったハンドルが保持され続けてアクセスされた場合に問題になりにくい。
0390デフォルトの名無しさん2011/12/18(日) 11:05:49.62
>>385
ハンドルは異なるアドレス空間でも共有できる。

0391デフォルトの名無しさん2011/12/18(日) 11:27:42.30
なんだ、ハンドルが実数じゃダメなの?って質問かと思ったわ
0392デフォルトの名無しさん2011/12/18(日) 14:34:18.25
実数だと == で比較出来なくなるだろ馬鹿
0393デフォルトの名無しさん2011/12/18(日) 15:08:00.68
プログラミング入門としてよくC言語が挙げられますが、今の時代にC言語ってどういう場面に使われているんでしょうか?
時代遅れという意見もよく聞きますので・・・
0394デフォルトの名無しさん2011/12/18(日) 15:09:57.93
パチンコ
0395デフォルトの名無しさん2011/12/18(日) 15:10:43.15
家電製品 

スペースシャトル 

電気自動車 
0396デフォルトの名無しさん2011/12/18(日) 15:14:12.79
>>394-395
重要な部分で使われているのですね
学習意欲がアップしました。ありがとうございます
0397デフォルトの名無しさん2011/12/19(月) 00:25:47.35
C言語知ってると他の言語に移行しやすいよね
そして、他の言語はC言語よりもずっと多機能で扱いやすい代わりに、
実行速度が異様に遅いことに愕然としてみたり・3・;
0398デフォルトの名無しさん2011/12/19(月) 01:52:19.88
そういえば。Cの習得に時間がかかりすぎて、
C++を含む他言語のライブラリ習得が難しくなってしまった

アタマが硬くなってしまったらしい
そういや、昔のコードを見返すと、汚かったが、賢かったような気がする

プログラミングはアマでやってるので、仕事に影響はないようなもんだが、
硬くなってしまったアタマは仕事に影響があり、プログラミングを通して、
アタマをやわらかくしたい。

いい方法はないか。ネタ、マジレス両方で。
0399デフォルトの名無しさん2011/12/19(月) 05:11:08.91
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
0400デフォルトの名無しさん2011/12/19(月) 18:22:56.19
>>398
スポーツすると頭に酸素がよく回って活発になるよ
0401デフォルトの名無しさん2011/12/19(月) 23:03:50.86
よこからだけど
いいこときいた
ありがとう
0402デフォルトの名無しさん2011/12/20(火) 00:14:04.66
>>398
・楽しめる部分を見つける。
見つからなければ、状況を楽しんでみる。
・苦痛を感じる手前で一旦休憩して再度トライする。
0403デフォルトの名無しさん2011/12/20(火) 00:54:10.94
頭が硬いとか柔らかいとか都市伝説だから心配すんなw
新しい言語の学習がうまくいかないのは、大抵、
1.それが必要じゃないから真剣味が足りない
2.単に経年等で知能が衰えた(ため相対的にそんな気分がする)
のどちらかで、大抵は1だから、仕事にすればすぐ出来るようになる。

0404デフォルトの名無しさん2011/12/20(火) 01:23:26.84
プリプロセッサがうまく動かないのですが、どこの記述がおかしいでしょうか?

↓正常にファイルが削除される
#include <stdio.h>
int main(){
if (remove("C:\\Documents and Settings\\user1\\hoge.dat") == 0)
 printf("削除成功");
else
 perror("削除失敗");
return 0;
}

↓ファイルが削除されない
#include <stdio.h>
#define HOGEFILE "C:\\Documents and Settings\\user1\\hoge.dat"
int main(){
if (remove(HOGEFILE) == 0)
 printf("削除成功");
else
 perror("削除失敗");
return 0;
}
0405デフォルトの名無しさん2011/12/20(火) 01:35:38.00
C++は何故、オブジェクト指向言語だと思われてるんだろう?
Stroustrup自身は、マルチパラダイム言語or効率的なライブラリ構築用言語だと表明してるのに。
0406 ◆QZaw55cn4c 2011/12/20(火) 01:47:49.75
>>404
こっちではうまくいった。
http://codepad.org/f1VObYKz
0407デフォルトの名無しさん2011/12/20(火) 01:51:53.23
ポインタを含む構造体の配列を動的につくりたいんですが、
構造体の配列が静的にしか作れません。
中身のポインタは、要素ごとにmallocできるんですが、、、
作り方教えてください
0408デフォルトの名無しさん2011/12/20(火) 01:56:19.16
>>406
ありがとうございます!
プリプロセッサの使い方が間違っているのかどうか自信がなかったのですが、
貼る過程で省略した部分のどこかが原因のようなので
もう一度自分で考えてみます。
0409デフォルトの名無しさん2011/12/20(火) 04:41:36.15
>>405
心配するな、誰もそんなことを思っていない。オブジェクト指向でもコードが書けるCだと思ってる。
大体STLを始めとするテンプレートライブラリなんて、オブジェクト指向の真逆を突き進んでる。
0410デフォルトの名無しさん2011/12/20(火) 05:30:32.49
STLを完成させるために、C++のオブジェクト指向( クラス、テンプレート)などが整備されたんだろ。
0411デフォルトの名無しさん2011/12/20(火) 05:42:27.19
STLが先か、C++が先なのか1979年の同年でよくわからん。たぶんSTLが先でその実現のC++が整備されたと思うが。




STLのアーキテクチャの多くはアレクサンドル・ステパノフという一人の人物の手によって作られた。
1979年に彼はジェネリックプログラミングの初期アイデアを練り始め、そしてソフトウェア開発に革命をもたらす可能性を探究し始めた。
当時はジェネリックプログラミングを実際にサポートしているプログラミング言語がまだなかった。
ジェネリックプログラミングに基づくコンポーネントライブラリの包括的なアーキテクチャを開発するためには、十分な研究と実験が必要であった。
Standard Template Library - Wikipedia


ストロヴストルップはC with Classesの開発を1979年に開始した。
これらの事情を鑑みて、ストロヴストルップは当時既に汎用的な言語であったC言語にSimulaの特徴を取り入れることを試みた。
最初はクラスと派生クラス、型検査機構の強化、インライン関数、デフォルト引数の機能を、Cfrontを介してC言語に追加した。
1985年10月に最初の商用リリースがなされた[1]。1983年にはC with ClassesからC++に名称を変更した。
C++ - Wikipedia
0412デフォルトの名無しさん2011/12/20(火) 10:22:36.07
いろいろ書けるCなんだろうが実際の開発だと矛盾したスタイルが混在して困る。
言語仕様を選択できるようなビルドオプションを仕様化してくれないかな・・・
0413デフォルトの名無しさん2011/12/20(火) 12:27:04.18
>>407

int t;
int len = 100;

struct HOGE{
int *a;
} *b = (struct HOGE*)malloc(len * sizeof(struct HOGE));

for(t = 0; t < len; ++t){
b[t].a = (int*)malloc(sizeof(int));
}
04143982011/12/20(火) 14:17:13.99
>>400-403
ありがとう、ちょっと元気出た
0415デフォルトの名無しさん2011/12/20(火) 18:41:02.33
>>400-403
ありがとう、ちょっと精液出た
0416デフォルトの名無しさん2011/12/21(水) 07:51:43.03
>>413
ありがとうございます。できました。
0417デフォルトの名無しさん2011/12/21(水) 13:49:27.00
sizeof(int)で4がでてきた場合、intの大きさは4バイトという認識であってますか?
0418デフォルトの名無しさん2011/12/21(水) 14:16:08.27
はい
0419デフォルトの名無しさん2011/12/21(水) 14:22:37.56
>>418
ありがとうございます
本には「大きさ」としかかかれてなかったもので
0420デフォルトの名無しさん2011/12/21(水) 15:40:29.84
#define alert() (putchar('\a'))

これは「引数のない関数形式マクロ」と解説されているのですけど、オブジェクト形式マクロとの違いがわかりません
これをオブジェクト形式マクロと解釈するのは間違っているのでしょうか?
0421デフォルトの名無しさん2011/12/21(水) 15:51:02.25
変数と、引数のない関数の違いみたいなもんじゃね
0422デフォルトの名無しさん2011/12/21(水) 16:45:08.48
#define alert() (putchar('\a'))
alert(); → (putchar('\a'));
#define alert (putchar('\a'))
alert(); → (putchar('\a'))();
0423デフォルトの名無しさん2011/12/21(水) 17:32:57.47
オブジェクトの集約をする時にはprivate継承してメンバ関数をusingするのと、メンバに持たせてメンバ関数を移譲するのどっちが一般的なんですか?
やっぱり実行時コストの掛からない前者ですかね?
0424デフォルトの名無しさん2011/12/21(水) 17:39:20.04
宣言と定義を一緒に書けば普通インライン展開されるからコスト的にそこまで差があるかは微妙
0425デフォルトの名無しさん2011/12/21(水) 23:08:23.34
どなたかお願いします。
C言語でファイルをオープンして
while(fscanf(fp,"%s",word)!=EOF){
array[i][LENGTH]=word;
printf("%s",array[i][LENGTH]);
printf("%s\n",array[i-1][LENGTH]);
i++;
}
とやったんですが、array[i][LENGTH]とarray[i-1][LENGTH]がファイルから読み込むたびに同じになってしまします。
array[0][LENGTH]=aiueo,array[1][LENGTH]=kakikukekoというように入れるにはどうしたらいいのでしょうか・・・
0426デフォルトの名無しさん2011/12/21(水) 23:12:57.12
>>425
arrayの型も書かずに質問かよ。
まぁどうせ、ポインタを代入しているってことはarray[][]がポインタなのだろうけど。
どっち途、文字列操作を勉強しなおすことをお勧めする。
0427デフォルトの名無しさん2011/12/21(水) 23:21:54.55
>>426
ありがとうございます。

char *array[i][100]としてます。
うーん、ちょっと文字列操作について調べてみます・・・
0428デフォルトの名無しさん2011/12/21(水) 23:52:55.42
>>425,427
#include <stdio.h>
#include <string.h>
#define LENGTH 100

int main(){
FILE *fp;
char array[1000][LENGTH];
char word[LENGTH];
int i = 0;

fp = fopen("a.c", "r");
while (fscanf(fp, "%s", word) != EOF) {
/* array[i][LENGTH] = word; */
strcpy(array[i], word);
/* printf("%d %s¥n", i, array[i]); */
printf("%d %s¥n", i - 1, array[i - 1]);
i++;
}

return 0;
}
0429デフォルトの名無しさん2011/12/22(木) 00:13:11.04
>>428
ありがとございます!できました。
ポインタについてかなり詳しく勉強しないと・・・ってことがわかりました><
またお願いします!
0430デフォルトの名無しさん2011/12/22(木) 00:15:10.04
配列に、文字列自体を入れてる、つもり、だよな
だが、そうはなっていない。
代わりに入っているのは…。

もし、それっぽい素養があれば、
printf("%x",array[i][LENGTH]);
printf("%X\n",array[i-1][LENGTH]);
と書けば、何かに気づくかも。
0431デフォルトの名無しさん2011/12/23(金) 15:12:10.83
アドレス代入で文字列コピーしようとする人は、他言語から来た人なのかな
0432デフォルトの名無しさん2011/12/23(金) 18:17:16.33
こんにちは。
C++とDXライブラリでちょっとしたゲームを作り始めたんですが、
vectorにキャラクターを入れて、アルゴリズムのsortでキャラクターの素早さ順に並び替える時に、
素早さの値が同じだった場合、1/2の確率で順番が逆転するようにしたいんですが、sortでは無理でしょうか?

キャラクタ1 素早さ8
キャラクタ2 素早さ8
キャラクタ3 素早さ10

↑のような場合、普通にやると

キャラクタ3、キャラクタ1、キャラクタ2の順番でソートされると思いますが、どうにか50%の確率で
キャラクタ3、キャラクタ2、キャラクタ1の順番にもソートされるようにしたいのです。

sortじゃなくてもなにか方法があれば是非教えてください。
0433デフォルトの名無しさん2011/12/23(金) 18:55:55.91
sortに渡す比較関数に乱数をもたせる

class CompSpeed {
public:
CompSpeed(unsigned long seed) : mRandom(seed) { }
bool operator () (Chara const & lhs, Chara const & rhs) const {
if(lsh.speed == rhs.speed) { return mRandom() % 2; } // 同じなら1/2で真、1/2で偽
else { lhs.speed > rhs.speed; } // それ以外はスピードで大なり比較
}
private:
Random mRandom;
};

sort(characters.begin(), characters.end(), CompSpeed(GetTime()) ;
0434デフォルトの名無しさん2011/12/23(金) 18:56:03.59
if(wParam(:_;) >= 0x60 && wPanda <= 0x69(^_^))
0435デフォルトの名無しさん2011/12/23(金) 19:06:03.83
MSはソートの比較関数に乱数を使う、という失敗をした事がある。
0436デフォルトの名無しさん2011/12/23(金) 19:09:48.93
一旦普通に並び替えて
同じ値の範囲を探してランダム並び替え
0437デフォルトの名無しさん2011/12/23(金) 20:14:06.92
>>433
ソートが終わらなくなる、とかいう危険はないよね?
0438デフォルトの名無しさん2011/12/23(金) 20:47:41.72
>>437
> ソートが終わらなくなる、とかいう危険はないよね?
sortのアルゴリズムと運によってはある。だから>>436の方向が無難
04394322011/12/23(金) 21:23:10.08
アドバイスありがとうございます。
>>433の方法試してみたら、invalid operator< のエラーが出てしまいました。
原因が分からないので、>>436でやってみようと思います。
0440デフォルトの名無しさん2011/12/23(金) 22:02:14.62
{素早さ}<<4 | {0-15の乱数} でソートはどう
0441デフォルトの名無しさん2011/12/24(土) 03:07:02.28
CまたはC++でFlashみたいなヌルヌルアニメーションするグラフィカルなGUIソフトを
作りたいんですが、何を使えば楽に作製できますか?
今はC++とWin32APIで作ってるけど、どうも古臭い見た目になってしまう
0442デフォルトの名無しさん2011/12/24(土) 04:59:37.81
C++ DirectX
0443デフォルトの名無しさん2011/12/24(土) 07:45:30.21
ある意味ズルだが、.NET併用
詳しくないんで雑談としてだが、今風のUIコンポーネントのライブラリは多少充実してるらしい
0444デフォルトの名無しさん2011/12/24(土) 08:22:36.72
スキンはプロクラムと別。小説の挿絵に小説家と別人がかいてたりする。
0445デフォルトの名無しさん2011/12/25(日) 01:20:49.67
>>441-442
ありがとう、DirectXか.NETか。
DirectXは本1冊だけだけど読んだから、やりたい処理を組む際の必要な勉強量は少ない
だろうけど、組むのが面倒そうだなと思っちゃう。
一度機能毎に細かく分けて作っておけばそうでもないんだろうけど。
.NETは触ったことも無いんだけど、開発効率よさそうだね。ちょっと.NET調べてみる
>>444
そうなんだろうけど、一人で全部やらなきゃいけないのよ
研究展示で人に触って貰えるように、GUIで操作できるようにしているんだけど
どうせならかっこいいインターフェースの方が受けいいし
中身はデータベース処理なんだけど、この結果を視覚的に表現したい
ここでヌルヌルアニメーションしたいんだよね。
例えるならスパイシーっぽい感じだけど、そんなに凝る気もなくある程度簡素なのを
0446デフォルトの名無しさん2011/12/25(日) 06:12:25.79
スパイシーwwwwwwwwwwwww
0447デフォルトの名無しさん2011/12/25(日) 07:16:57.66
スパイシーって韓国料理みたいな意味か
タイ料理ならまだかっこいいが
0448デフォルトの名無しさん2011/12/25(日) 09:46:41.54
ああ、デプロイを考えなくていいプロジェクトなのね
案外、HTML5で書いたほうがさくさくUIいけるかもねー。

ターゲットとUIのisolationにもなる。

C++でhttp鯖か串をビルドして、CGIでターゲット?に生命令を送ったらどうか
俺はいじり慣れてるからprivoxyを薦めるが、要するに、そんなのだ
0449デフォルトの名無しさん2011/12/25(日) 09:48:03.76
ああごめん、DBって書いてた
ターゲット(ボード)っていうより、core process か。
0450デフォルトの名無しさん2011/12/25(日) 13:59:56.65
>>448-4449
ありがとう、ユーザーインターフェイス面はHTML5で作成してブラウザで賄うってことか
それはかなり便利そう。だけど来月中旬には完成させたいので今からHTML5勉強して
実用域までもっていくのは辛いです。
.NETも調べてみたらこの目的だと辛そうだし、やっぱDirectXまたはOpenGLで作ってみる
ことにします。後々のAndroidへの移植も考えてOpenGLでいこうかな
0451デフォルトの名無しさん2011/12/25(日) 20:15:58.75
>>450
来月中旬までなら、丸々一週間は勉強する時間があるじゃないか。
0452デフォルトの名無しさん2011/12/25(日) 23:38:46.40
HTML5は最たるものだが、legalにパクってこれるものは、パクっていい。
よさげなUIがあって、それが誰でも使っていいライブラリの仕事だったら、
あなたが使ってもいい。

DX/GLに、そんなパクりやすいライブラリあるのかな、と思うが、あるのかもしらん
0453デフォルトの名無しさん2011/12/28(水) 20:02:39.02
スマポ(あるいは薄いラッパー系やプロクシ)作るときにoperator &はどう作るのが一般的なんだろうか
ラップしてる方のアドレスか、中身のアドレスか
0454デフォルトの名無しさん2011/12/28(水) 20:19:14.58
すまぽを自作しようなんて思うなってばっちゃんが言ってた

# 覚悟を決めて、「車輪は一度は作って壊してみるもの」をやってみる。
0455デフォルトの名無しさん2011/12/28(水) 23:30:42.65
>>454
確かに、研究や腕試しなら作ってみるのもいいけど実用ならそれなりにメジャーな出来合いのものを使うべきだな。

で
>>453
> スマポ(あるいは薄いラッパー系やプロクシ)作るときにoperator &はどう作るのが一般的なんだろうか
> ラップしてる方のアドレスか、中身のアドレスか
独自には作らずそのままスマポ自体のインスタンスのアドレスを取得させるのが普通。
0456デフォルトの名無しさん2011/12/29(木) 15:55:45.10
int a[N] = { 1, 5, 0 , 3, ... } ;

//A
vecor<int> v(a, a + N);

//B
vector<int> v;
v.reserve(N);
v.assign(a, a + N);


AとBってどっちが速いですかね?
0457デフォルトの名無しさん2011/12/29(木) 15:57:24.46
つ[実測]
0458デフォルトの名無しさん2011/12/29(木) 16:06:46.17
普通に考えたらAのほうがいいしBのreserveは不要
でもパフォーマンス問題は実測が基本
0459デフォルトの名無しさん2012/01/02(月) 10:28:21.99
初心者本読んでてわからない事が出たんで教えてくらはい

const char* name = GetOldMonthName(int month); //昔の月の名前で表示する関数。前の方で定義済み。
cout << name << endl;
ってのがあるんですが、表示されるのはポインタnameに格納されてるアドレスではないのですか?
実際やって見ると参照先が表示されます
cout << *nameに変えると何も表示されませんでした。

int a = 10;
int* p = &a;
cout << p << endl;
とした場合にはpにあるアドレスが表示されるので
どこで違いがあるのかがわかりません
0460デフォルトの名無しさん2012/01/02(月) 10:36:50.65
int a[10]とchar a[10]でも違うだろ。
文字列型だけ特別扱いされて、アドレス渡すと中身が表示される。
0461デフォルトの名無しさん2012/01/02(月) 10:39:27.10
cout << (int)name << endl;

cout << *(int*)name << endl;

にしたら何か数字出る。
0462デフォルトの名無しさん2012/01/02(月) 10:48:58.27
ありがとうございます。
>>460
そういう事でしたか。
文字列のところとcoutのところもう一度読み直しておきます。
>>461
両方数字が出ました。下はマイナスで上より桁が大きかったです。
キャストってやつなのかな。これも読んでおきます。
0463デフォルトの名無しさん2012/01/04(水) 17:09:57.78
派生クラスでメンバ関数を呼び出したらすべての基底クラスの同名同シグネチャのメンバ関数をすべて呼び出す
みたいなコードはちまちま手書きで書かないと作れない?
デストラクタみたいに勝手にやってくれると楽なんだけど
0464デフォルトの名無しさん2012/01/04(水) 18:09:05.38
たいていそういうのに限って、関数によって、少しずつ、後先が違ってないか
0465デフォルトの名無しさん2012/01/04(水) 18:18:38.26
違う分だけ書き足すってのがふつうじゃないか
0466デフォルトの名無しさん2012/01/04(水) 21:39:42.10
前関数を呼ぶ位置の後先が、全部同じなのか?たいてい、少しずつ、、
0467デフォルトの名無しさん2012/01/16(月) 09:27:53.08
10件のデータを読込み、最大、最小値を求め表示するプログラムなのですが
ここでは体重にしました。よく分からないので教えていただけないでしょうか。
参考書を読みながら書いてみましたがfor以降がイマイチ分かりません。

#include<stdio.h>
int main(void)
{
float w_max,w_min,weight;
int i;
for(i=0;i<10;i++){
scanf("%f",weight[i]);
if(w_max < weight[i])
w_max = weight[i];
if(w_min > weight[i])
w_min = weight[i];
}

for(i=0;i<10;i++){

//不明
}


printf("i= %d w_max=%f w_min= %f\n", i, w_max, w_min);

return 0;
}
0468デフォルトの名無しさん2012/01/16(月) 10:40:07.17
内容的に宿題スレですね
すいませんでした。
0469デフォルトの名無しさん2012/01/16(月) 11:29:40.25
>>467
その条件だけなら、二番目のループ自体不要だろ。
ついでに言えば、その後のiの出力も意味がない。
0470デフォルトの名無しさん2012/01/16(月) 17:06:06.20
Cの宿題なら、「該当行で出力されるiの値はいくらか。」って聞かれてもいいな
0471デフォルトの名無しさん2012/01/18(水) 23:25:45.05
こんにちは。C++とDXライブラリでしょぼいけどゲーム作っています。質問させてください。

二次元ベクタにキャラクターを入れて、その全てを描画する方法として、例えば、

vector<vector<Character>> Chara;
for(int y=0;y<Chara.size();y++)
for(int x=0;x<Chara[y].size();x++)
Chara[y][x].Draw();

という方法があると思います。
また、例えば、キャラクターのHPが0になっている者を探し、
そのHPを回復させるとしたら、

for(int y=0;y<Chara.size();y++)
for(int x=0;x<Chara[y].size();x++)
if(Chara[y][x].HP==0)Chara[y][x].HP+=100;

みたいな感じになると思うんですが、
for文で回しているところが、重複して無駄な感じがするので、
テンプレート関数とかを使って、何か上手く出来ないかと悩んでいます。

AllDo(Chara,Draw());
AllDo(Chara,Recover()); ←みたいに出来ればすっきりするんですが・・・。
どう書いたらいいのか頭がこんがらがってしまって(汗)
どなたかご教授下さい。よろしくお願いします。
0472デフォルトの名無しさん2012/01/19(木) 00:36:26.93
0x使ってもよさ気だから、forを関数にして中身をラムダで書けばいい
0473デフォルトの名無しさん2012/01/19(木) 01:13:26.33
template<class F>
void AllDo(vector< vector<Character> > & v, F f)
{
for(int y(0); y < v.size(); ++y)
for(int x(0); x < v[y].size(); ++x)
f(v[y][x]);
}
0474デフォルトの名無しさん2012/01/19(木) 01:15:39.75
イテレーターを作ってstd::for_eachだろ
04754712012/01/19(木) 05:27:53.71
ラムダ式すっごい楽です!
まだC++始めて日が浅いのでこの機能は知りませんでした!
>>472-474
教えてくださった皆さんありがとうございました。
0476デフォルトの名無しさん2012/01/20(金) 17:08:39.53
Windows7 64bit版のポインタのサイズって64bitで合ってる?
0477デフォルトの名無しさん2012/01/20(金) 17:11:41.59
いいえ
0478デフォルトの名無しさん2012/01/20(金) 17:23:09.98
てことは、64bit版もポインタのサイズは32bitなのか
ありがとう
0479デフォルトの名無しさん2012/01/20(金) 17:36:37.31
てことは
はどこに掛かってるんですか
0480デフォルトの名無しさん2012/01/20(金) 17:50:36.19
いいえ
0481デフォルトの名無しさん2012/01/20(金) 17:54:12.44
言い得て事は
0482デフォルトの名無しさん2012/01/20(金) 18:00:41.14
>>476
16bitは動かないから、32bitまたは64bitじゃないかな
0483デフォルトの名無しさん2012/01/20(金) 18:04:16.54
なんでポインタのサイズなんて気にするの?
実質ただの整数なんだから32でも64でも大差ないでしょ
0484デフォルトの名無しさん2012/01/20(金) 18:10:11.41
>>476
VCならばこのあたりに注意すれば十分かと
ttp://msdn.microsoft.com/ja-jp/library/3b2e7499.aspx
0485デフォルトの名無しさん2012/01/20(金) 18:18:18.31
わかんなかったら全部64bit整数でショリすれば問題ない
0486デフォルトの名無しさん2012/01/20(金) 18:21:09.88
そんなコード書いてて128bit時代が来たらどうするの?
0487デフォルトの名無しさん2012/01/20(金) 18:25:58.21
全部128bit整数にすれば問題ないよ?
typedef一発だよ
0488デフォルトの名無しさん2012/01/20(金) 18:29:13.02
typedef int32_t oreint_t;
typedef int64_t oreint_t;
typedef int128_t oreint_t;
void oreint_chk(void) {
if (sizeof(oreint_t) != sizeof(void *))
abort(); // 無理です
}
何も問題ない
0489デフォルトの名無しさん2012/01/20(金) 18:32:58.92
DWORDとDWORD_PTRの大きさ違うとか
いちいち問題にする事自体が時間の無駄
0490デフォルトの名無しさん2012/01/20(金) 22:08:26.58
たぶん、そんなあなたに:intptr_t
0491デフォルトの名無しさん2012/01/21(土) 02:09:08.83
それで思い出したけど、_t の t って何の略?
size_tのおかげで、しれっと使ってるけど、良く考えたら何の略か知らなかったので、
この際教えて欲ください。
0492デフォルトの名無しさん2012/01/21(土) 02:16:15.68
何かの略というより、お墓ね
0493デフォルトの名無しさん2012/01/21(土) 02:51:54.94
typedef
0494デフォルトの名無しさん2012/01/21(土) 02:54:28.66
type
0495デフォルトの名無しさん2012/01/21(土) 09:39:30.24
size_tとかSizeTypeみたいな後ろにくっついてる型を意味するサフィックスは
大抵の場合変数名とかぶるのが気持ち悪いというだけの理由で付けられたものだよ
0496デフォルトの名無しさん2012/01/21(土) 23:18:35.97
>>495
ソース

// C/C++の薀蓄もきちんと知りたい年頃。
// 納得はしている。
0497デフォルトの名無しさん2012/01/22(日) 16:44:34.75
ひょっとして仮想関数を利用したポリモーフィックなクラス階層構造以外で継承することってあまり無いんですか?
今まで継承していたクラスをメンバに持たせて関数を呼び出すだけのinlineメンバ関数を定義するするほうが複雑なコードを組みやすい気がするんですけど
0498デフォルトの名無しさん2012/01/22(日) 16:51:24.82
ひょっとしてはどこに掛かってるんですか
0499デフォルトの名無しさん2012/01/23(月) 11:59:33.25
なんでC++はポインタと参照を違うインターフェースで扱うんですか?
Javaみたいに全部.でやったほうがクールだと思います
0500デフォルトの名無しさん2012/01/23(月) 14:34:16.26
Javaを意識したら、Oracleがアップをはじめるからだめです(w


Javaを意識して、極力参照で書くようにポリシを決めることはできる
君が自由人(個人開発者)なら、まったく君の自由だ

C/C++には、壊れてたり、nullだったりするポインタ型の値を扱う「資格」があるんだよ
C系のみとは言わないが、そこには誇りすらある

# 休憩しにきた
0501デフォルトの名無しさん2012/01/24(火) 11:35:16.68
C#でおk
0502デフォルトの名無しさん2012/01/25(水) 20:19:38.03
“Javaには無い”演算子オペレーターを効率よく実装するためだったような
もう忘れた
0503デフォルトの名無しさん2012/01/25(水) 20:54:01.80
Handle-Bodyを使えば見た目が参照っぽいスマートポインタになってJava厨も安心する
0504デフォルトの名無しさん2012/01/25(水) 21:53:31.45
enum をインクリメントして巡回したいんだけど安全で汎用的な方法はある?
enumの型ごとに値の遷移テーブル(それかswitchで次を見つけるだけの関数)を作るみたいな、地道な作業するしかないかな?
0505デフォルトの名無しさん2012/01/25(水) 22:18:47.13
汎用的かどうかなんてその時個々人の主観が伴うから
好きにしたらいいよ
0506デフォルトの名無しさん2012/01/25(水) 22:55:00.76
enumがアップル=1、オレンチ=3、ピーチ=7だったら

num[]={1,3,7}; とsize=3を別に持っとけ。

このデータを前処理で自動生成してもよい。
0507デフォルトの名無しさん2012/01/25(水) 23:15:40.86
地道な作業を、PCにやらせるようにするのが古典的だが手っ取り早い
0508デフォルトの名無しさん2012/01/25(水) 23:17:53.77
そうだな生成プログラムでも書いた方がらしいな
0509デフォルトの名無しさん2012/01/26(木) 18:00:43.29
Visual Studio2003です。
.cファイルを右クリックしてコンパイルすると.objファイルができるじゃないですか。
このできた.objファイルを他のプロジェクトで使いたいんですよ、javaの.classファイルみたいなイメージで。
でもソリューションエクスプローラには「ソースファイル」「ヘッダーファイル」「リソースファイル」とあるんですが、どこに置いてどうincludeすれば使えるようになるんですか?
0510デフォルトの名無しさん2012/01/26(木) 18:21:54.58
・.objはリンカが扱う。
・ただし、リンカコメントというのをソースに埋め込むと、.cで.objを引っ張り込むことを記述できる。
0511デフォルトの名無しさん2012/01/26(木) 19:57:25.12
>>510
リンカコメントですね、ググってみます。
ありがとうございます。
0512デフォルトの名無しさん2012/01/26(木) 20:22:45.05
うん、ぐぐったらなんかわかるだろ。
と思ってたら、通称だったかも。うまく出せない。

> #pragma comment(linker, "...")

こういうのなので、ぐぐってみそ。

で、そんなことをするうちに、include 的に記述するより、
プロジェクト設定みたいので指定するのが自然ってのがわかると思う
0513デフォルトの名無しさん2012/01/26(木) 20:49:19.22
Makefileに変換してnmake使うことできないの?
後々そっちの方がいいよ
0514デフォルトの名無しさん2012/01/27(金) 09:03:21.79
>>512
ありがとうございます。色々試してみます。
>>513
nmakeって元から入ってるのならいけると思います。
自分のバソコンじゃないのでインストールとかはできないです。
0515デフォルトの名無しさん2012/01/28(土) 14:49:21.25
ナマポとスマポどっちもぶち込めるコンテナってどう書くんですか?
0516デフォルトの名無しさん2012/01/28(土) 23:43:59.13
スマポのナマポをぶちこんどけばおk
0517デフォルトの名無しさん2012/01/29(日) 07:35:41.50
WindowsのC/C++のUNICODE両対応アプリのソースって、
文字定数と文字列定数はいちいち_T()で囲わないとダメですか?
一部をANSIで扱うことってありえますか?
0518デフォルトの名無しさん2012/01/29(日) 08:09:51.62
今の流行はAPIに食わせる場合は_T()
食わせない場合はUTF-8として扱う
かな
0519デフォルトの名無しさん2012/01/29(日) 22:37:04.75
WindowsはAPIにAやWがついてるやつを使えば
_T使わなくても平気じゃないかな
0520デフォルトの名無しさん2012/01/29(日) 22:53:52.30
CString使えばいいよ
0521デフォルトの名無しさん2012/01/29(日) 22:56:40.08
時刻を管理するクラスTimeのメンバ関数として、
分を返す
int Time::min( ) const
を用意したのですが、
VC++ 2010だと、windows.hをインクルードした際に
マクロmin(a,b)(((a)<(b))?(a):(b)) と解釈されてしまい
引数が足りないというコンパイルエラーになります。
このコンパイルエラーを回避するためには
min()の名前を変更する以外に方法は無いのでしょうか?

よろしくお願い致します。
0522デフォルトの名無しさん2012/01/29(日) 23:22:39.49
#define NOMINMAX か (t.min)();
0523デフォルトの名無しさん2012/01/29(日) 23:23:52.48
>>521
includeした後にundefする。でも衝突しそうな名前は初めから避けるべき
0524デフォルトの名無しさん2012/01/30(月) 00:39:48.02
ファイル名やフォルダ関係はUNICODEで統一しといた方がいいかも
ファイルの中身は知らん
05255212012/01/30(月) 09:55:06.10
>>522
>>523
ありがとうございます。
0526デフォルトの名無しさん2012/01/30(月) 10:10:56.90
stdと衝突するあたりM$の頭の悪さが露呈してるよなぁ
0527デフォルトの名無しさん2012/01/30(月) 14:50:02.33
maxマクロを書いたMSのプログラマは絶対に許さない。絶対にだ
0528デフォルトの名無しさん2012/01/30(月) 22:38:39.10
>>526
windows.hって相当昔からあるから、STLが規格に入る以前に作られてたとか
0529デフォルトの名無しさん2012/02/03(金) 00:18:22.76
C++の大規模ソースをソーストレースするときのおすすめツールを教えてください。
ある関数の宣言もとや使用箇所を手早く探せるようにしたいです。


以下、今まで使ってたもの。

 ctags     :同じ名前の関数(オーバーライドされてる関数)があるとき、
          候補をリスト表示できない。
          関数やメンバを使用している箇所を表示できない。

 GNU Global :構造体のメンバを検索したり、
          関数定義もとを探すときに見つからないことがある。


Windows 、Linux のどちらかで使えれば良いです。
0530デフォルトの名無しさん2012/02/03(金) 00:31:09.18
grepや全文検索。
コンパイラ提供のインクルードパスをgrepかけることあるがそれほど時間掛からん。
0531デフォルトの名無しさん2012/02/03(金) 10:17:31.94
ビルド環境さえ用意できるならなにもなくてもなんとかなるね
grep,ファイラー,テキストエディタはさすがに用意できるだろうし
0532デフォルトの名無しさん2012/02/03(金) 13:40:47.76
ソースを全文検索対象にして、indexつくらせちゃう
まったくのベタだが、結局これがいちばん早かった
0533デフォルトの名無しさん2012/02/05(日) 15:08:59.03
class c_A、class c_Bがあって、


〜〜ヘッダファイル内〜〜
#include "c_B.h"

class c_A
{
c_B hoge;

};
〜〜〜〜〜〜〜〜〜〜〜
でインスタンス生成できちゃうんですか
0534デフォルトの名無しさん2012/02/05(日) 15:46:32.64
>>529
つ[Doxygen]

>>533
できない。
0535デフォルトの名無しさん2012/02/05(日) 18:41:28.49
C++の規格上vector.end()をインクリメントすると何が帰ってくるか未定義?
だとすると内部で+=や++オペレータを呼ぶだけのadvanceは終わりをチェックしてくれていないの?
0536デフォルトの名無しさん2012/02/05(日) 18:43:48.01
はい
05375332012/02/05(日) 19:56:00.52
すいません、c_Aのインスタンスを生成したときに、内部に持っているc_Bの
インスタンスも生成されるのでしょうか?
という質問でした
0538デフォルトの名無しさん2012/02/05(日) 19:59:31.87
はい
0539デフォルトの名無しさん2012/02/05(日) 20:44:34.41
それで納得したならそれでいいし、
それで何か困るなら、ラッパクラスを作ってもいい
0540デフォルトの名無しさん2012/02/05(日) 21:03:30.46
>>536
ohそうなのか。ありがとう
規格上どのコンテナのイテレータでもそうなってる訳?
0541デフォルトの名無しさん2012/02/05(日) 21:05:46.99
はい
0542デフォルトの名無しさん2012/02/05(日) 23:09:47.26
ほんとにちょっとした質問なんですけど、

ifstream ifs("csvファイル.csv");
string line;
getline(ifs,line);
//※ここで、別のファイルを開きたくなったので、
ifs.open("別のファイル.csv");
ってやった場合、マズかったりしますか?
それとも、ifsは「別のファイル.csv」をちゃんと頭から読み込んでくれますでしょうか?
0543デフォルトの名無しさん2012/02/05(日) 23:16:38.66
はい
0544デフォルトの名無しさん2012/02/05(日) 23:19:07.66
マズかったりします
0545デフォルトの名無しさん2012/02/06(月) 01:10:08.63
>>541
thx!
だとイテレータ使ったループって使いにくくない?
Cだとfor(i=0;i<10;i+=2);で偶数飛ばせるけどイテレータはいつもend()になったかどうか
チェックしないといけない。ぶっちゃけ改悪なのでは?
0546デフォルトの名無しさん2012/02/06(月) 01:35:42.46
listなどの実装を考えると一般的にイテレーターがi<Nと書けない(非常にコストが掛かる)ことに気がつく
0547デフォルトの名無しさん2012/02/06(月) 07:56:49.62
コンティナーのせっかく抽象化したい照れーたをインクリメイツ
って発想が
キモイと思うのだが
片リストを逆から辿ろうとしたら
「このコードはバヤイ!リバースコピーをいテレータ用に確保なう!」
「もっといい方法があるのにp」
と忠告してくれるコンパイラーがあるといい
0548デフォルトの名無しさん2012/02/06(月) 08:07:20.64
>>546
大概の実装はlistのsizeは定数時間になっていると思うが
0549デフォルトの名無しさん2012/02/06(月) 11:33:49.80
>>548
それとこれとは関係ない。
0550デフォルトの名無しさん2012/02/07(火) 16:30:45.59
while(true){
int a = 1;
cout << a << endl;
a = 2;
}

whileブロック内で変数を定義したらどんなもんかとこれを試してみたら
無限に1が出力されました。初期化って一度だけかな?と思ったけど
この結果ということは、これは一回のループごとに毎回変数が定義されてる
ということですか?auto変数の確保→破棄を延々と繰り返すみたいな。
だとするとwhileブロックの外で定義した場合に比べて効率が悪いのですか?
0551デフォルトの名無しさん2012/02/07(火) 16:33:50.32
>>550
気にするほどの差はないだろ。最適化される。
使うときに明示的に定義した方が速いこともある。
長期間使用され続ける物は、CPUキャッシュに入りにくくなる可能性がある。
0552デフォルトの名無しさん2012/02/07(火) 16:39:03.86
レスどうもです。
たいした差はないということですが、プログラミング作法としても
whileブロック内での変数定義ってあたりまえのように使われるの
でしょうか(初期化のあるなしに関わらず)。
0553デフォルトの名無しさん2012/02/07(火) 16:45:50.33
あたりまえのように使われる
0554デフォルトの名無しさん2012/02/07(火) 16:46:57.81
そうですか、ありがとうございました。
0555デフォルトの名無しさん2012/02/07(火) 19:00:20.48
while(true)
{
 std::vector<int> tmp(1000);
}
とかなら考え直したほうがいいな
0556デフォルトの名無しさん2012/02/07(火) 19:06:36.55
while(true) {
static std::vector<int> tmp(1000);
}

つまりこういうことですね?
0557デフォルトの名無しさん2012/02/07(火) 23:25:52.31
変数の生存が長く使われないほど
CPUキャッシュ ⇒ メモリ ⇒ HDD と配置が格下げされる。
HDDまでいったら値を読み込むのに時間食う。
新規に生成したほうが得。
メモリにあったとしてもそれを読み込むよりL1キャッシュに新規に生成した方が速いだろう。
0558デフォルトの名無しさん2012/02/08(水) 01:45:33.96
>>557
キャッシュミスより生成コストのが普通に高いと思うけど、
そんな事ありえるの?
0559デフォルトの名無しさん2012/02/08(水) 03:11:26.31
プリフェッチも考慮するとキャッシュミス自体それほど起こるかどうか
0560デフォルトの名無しさん2012/02/08(水) 08:25:58.69
そもそも、ローカル変数なら同じコードに落ちる可能性が高い。
つまり、関数突入時にスタックポインタを移動するだけ。
0561デフォルトの名無しさん2012/02/08(水) 08:58:10.22
そういうくだらない最適化は最後の最後にしろ
0562デフォルトの名無しさん2012/02/12(日) 18:45:29.51
クラスメンバ関数の宣言と定義を分けるときにinline化したい場合は
宣言か定義のどちらかにinlineが入っていればOKですか?
それとも両方書かないとだめですか?
0563デフォルトの名無しさん2012/02/12(日) 22:11:37.43
int a[4];
があったとして、
もしa[0],a[1],a[2],a[3]全てが0だったら、という条件式は
if(a[0]=0 && a[1]=0 &&a[2]=0 &&a[3]=0)
以外に表せますか?
なんかもっとスマートに書けたりできますか?
0564デフォルトの名無しさん2012/02/12(日) 22:22:55.93
if(a[0]|a[1]|a[2]|a[3])
スマートかどうかは知らん
0565デフォルトの名無しさん2012/02/12(日) 22:25:24.66
そもそもそれ代入やん
0566デフォルトの名無しさん2012/02/12(日) 22:27:17.51
ひっかけ乙だったのかw > 565
0567デフォルトの名無しさん2012/02/12(日) 22:37:50.98
if(a[0]=a[1]=a[2]=a[3]==0)
とかだめだったっけ
0568デフォルトの名無しさん2012/02/12(日) 22:52:52.39
中身ぶっこわしてもいいのならアリ・・・か?
0569デフォルトの名無しさん2012/02/12(日) 23:27:14.24
>>563
int i;
for(i=0; i<4; i++) if(a[i] != 0) break;
if(i == 4) {
    //全て0のときの処理
}
0570デフォルトの名無しさん2012/02/13(月) 00:26:09.73
intが32bitで128bitレジスタがあったら
if (*(int128*)a != 0)
0571デフォルトの名無しさん2012/02/13(月) 08:16:17.69
if( a[0]*a[0] + a[1]*a[1] + a[2]*a[2] + a[3]*a[3] == 0 )
0572デフォルトの名無しさん2012/02/13(月) 08:23:37.82
if(a[0] || a[1] || a[2] || a[3]) {
; /* なにもしない */
} else {

}
0573デフォルトの名無しさん2012/02/13(月) 12:38:17.22
>>562
宣言にinlineは、書いても書かなくてもinlineじゃないか?

定義はinlineにしたいならヘッダに書くべきだし、
ヘッダに書くとして複数includeする場合は、
inlineを書かないといけない。

1ファイルでしか使わない場合はシラネ
0574デフォルトの名無しさん2012/02/13(月) 14:12:45.40
テンプレート関数xxxにfuncを渡すときには自動的にTとUが設定されるのに
テンプレートクラスyyyにfuncを渡すときには、自分でTとUを指定しなければなりません。
この違いはなんなのでしょうか?
環境は gcc version 4.6.1 です。


template<class T, class U>
void xxx( T (*func)(U) )
{ }


template<class T, class U>
class yyy
{
 private:
  T (*f_)(U);
 public:
  yyy( T (*f)(U) ): f_(f){ }
};


double func( int v ){ return (double)v*0.1; }

int main( )
{
 xxx( func );
 //yyy obj( &func ); //templateの型を指定しないとコンパイルエラー
 yyy<double,int> obj;

return 0;
}
0575デフォルトの名無しさん2012/02/13(月) 18:30:09.86
>>574
関数は型推論してくれるが、クラスはしてくれない決まりだから
05765742012/02/13(月) 22:46:09.01
>>575
ありがとうございます。

std::mem_fun_refとその内部で呼んでいるstd::mem_fun_ref_t
との関係がイマイチわからなかったので色々試していたところでした。
テンプレート関数のstd::mem_fun_refで型推論して、
テンプレートクラスのstd::mem_fun_ref_tに伝えているのですね。
0577デフォルトの名無しさん2012/02/15(水) 12:40:26.78
こういう命名ってC++では合法ですか?

namespace _hoge {
struct _fuga {
void _func(void);
};
}
0578デフォルトの名無しさん2012/02/15(水) 13:02:26.24
>>577
×namespace _hoge {
○struct _fuga {
○void _func(void);
先頭にアンダースコアはオススメしない
0579デフォルトの名無しさん2012/02/15(水) 19:47:17.24
これってどういう意味でだめなんだっけ?
> ×namespace _hoge {

ネームスペース名って先頭アンダースコアだめなんだっけ?
0580デフォルトの名無しさん2012/02/15(水) 20:04:49.94
>>579
グローバルスコープが禁止
0581デフォルトの名無しさん2012/02/15(水) 20:43:27.29
どうもです。
じゃあ入れ子になってれば可能なんですな。
0582デフォルトの名無しさん2012/02/21(火) 12:57:48.48
文字列の配列を10個用意して最初の文字列にstrcpyでデータをコピーしたいのですがエラーになってしまいます

char* p[10];
p[0] = "Spring";
strcpy(p[0],"Summer");

一体どこをどう直せばよいのでしょうか?
0583デフォルトの名無しさん2012/02/21(火) 13:03:26.26
std::string p[10];

p[0] = "Spring";
p[0] = "Summer";
05845822012/02/21(火) 13:45:23.18
ありがとうございます、string型でやってみます。
ちなみにstrcpyを使うのは間違いなのでしょうか?
何が間違いなのかよく分からないのです

0585デフォルトの名無しさん2012/02/21(火) 13:51:30.39
メモリについてもう少し勉強しなさい
05865822012/02/21(火) 13:55:37.67
分かりました、もう少し勉強します
0587デフォルトの名無しさん2012/02/21(火) 15:28:01.01
浮動小数の比較で

a=1.0;
b=1.0;
if ( a <= b )

みたいにするのは、やめたほうがいいですか?
a=1.0 とすると実際は a=1.00000000001 みたいになってて <= の評価が
うまくいかない可能性を危惧しています。とりあえず今のところ問題なさそうなんですが。
Fortranやってたときは、よくこんなふうにやってました。

eps=1e-30;
a=1.0-eps;
b=1.0;
if ( a <= b )
0588デフォルトの名無しさん2012/02/21(火) 15:30:17.33
場合による
0589デフォルトの名無しさん2012/02/21(火) 15:45:14.64
問題出るまでそのまま使っとけ。
問題あったら任意精度や整数計算へおきかえればいい。
精度が64、128ビットと固定されていればどれだけビット数上げても誤差が出る。
その初めに引いとくのは駄目だろ。もしaが負の方向へ小さかったら間違える。
0590デフォルトの名無しさん2012/02/21(火) 23:19:04.96
一致じゃなくて大小関係なんだろ?
単に if( b > a) でいいのでは…
一致が必要なときは、確かに、EPSILON系の定数を使うけど。
0591デフォルトの名無しさん2012/02/21(火) 23:29:00.68
厳密には大小でもダメだよ
計算機上の値では0 < xが真になる場合でも真値では0 < xが成立しない事は普通にある
0592デフォルトの名無しさん2012/02/25(土) 17:10:03.20
vector<bool>に限らず特殊化されたテンプレートクラスを
特殊化しないで使いたい場合はどうすればいいんですか?
0593デフォルトの名無しさん2012/02/25(土) 17:36:17.81
そんなことはできない
0594デフォルトの名無しさん2012/02/26(日) 03:37:46.38
具体的に何がしたいんだろう、ちょっと読めない
0595デフォルトの名無しさん2012/02/26(日) 05:19:34.45
hoge<bool> という特殊化されたオリジナルのテンプレートがあって、
それを、hoge<int>でも使いたいとか、そういうことかな?

他はまったく思いつかない。
0596デフォルトの名無しさん2012/02/26(日) 07:25:45.13
何でそうしたいか理由が全く分からん。やるならメンバにboolだけ持たせた構造体を定義してそれを渡すとか?
0597デフォルトの名無しさん2012/02/26(日) 13:27:55.80
最適化などのために特殊化されてるけど
他のコードと互換性がなくて仕方なく非特殊化バージョンを使いたいなーということはあるでしょ
bool参照しか受け取らない関数にvector<bool>の要素渡せないとか
0598デフォルトの名無しさん2012/02/26(日) 16:53:20.32
質問させていただきます。PGを書く問題ではないのですが、
「ソートプログラムとデータ構造について
具体的なソートプログラムの名前をあげ、
とのようなデータ構造(配列、単方向リスト、双方向リスト、循環リストなど)が
なぜ適しているか述べろ。

が分かりません!教えてください
0599デフォルトの名無しさん2012/02/26(日) 17:39:01.94
丸投げは宿題スレ行け
0600デフォルトの名無しさん2012/02/27(月) 00:31:23.68
これは簡単なようでいて、こういうのに強くないと解けない 宿題スレが適当
0601デフォルトの名無しさん2012/02/27(月) 10:11:12.67
宿題スレでも扱いが酷いな。テンプレ無視だからしょうがないけど

まずソートの種類を調べるくらいは自分で出来るんじゃない?
それからそのソートに適したデータ構造と理由を聞けば…

ところで循環リストが適してるソートなんてあったっけ?
0602デフォルトの名無しさん2012/02/27(月) 11:07:15.84
循環ソート
0603デフォルトの名無しさん2012/03/16(金) 00:20:56.14
c++ってchar使うの?
文字列はstringを必ず使うべきなの?
0604デフォルトの名無しさん2012/03/16(金) 00:33:04.28
stringはcharがもとになっている。資源の無駄を減らすならchar
0605デフォルトの名無しさん2012/03/16(金) 07:49:56.89
純粋に高級言語として使うなら「1文字の文字」を扱うときぐらいだが
C++には高級アセンブラたるC言語の後継としての役割もあるから無いと困る
組み込み系はもちろんだし、そうでなくてもAPIとかはchar[]ベースだったりする
0606デフォルトの名無しさん2012/03/17(土) 12:18:11.06
charを要求するライブラリを呼ぶ限り、charは不滅
もちろん、charを極力廃すような書き方をすることは可能だろう
0607デフォルトの名無しさん2012/03/18(日) 20:24:47.88
C++のステートパターンの骨組みというか
サンプルプログラムを教えてください。
0608デフォルトの名無しさん2012/03/18(日) 23:02:30.36
>>607
https://www.google.co.jp/
0609デフォルトの名無しさん2012/03/19(月) 00:00:49.96
struct A{
  int a;
  struct B{
    static int& a;
  };
  int f(){
    a = 10;
    B::a = a;
  }
};
int main(void){
  A a;
  a.f();
}
で,
undefined reference to `A::B::a'
とエラーが出ます.
どうやって回避すればいいのでしょうか.
0610デフォルトの名無しさん2012/03/19(月) 00:08:44.64
>>609
そもそも、なんで構造体の中から外を知ることができると思い込んだの?
0611デフォルトの名無しさん2012/03/19(月) 00:27:02.08
>>610
確かに言われて見れば・・・
とりあえず構造体のネストを消すように作り直してみます.
0612デフォルトの名無しさん2012/03/19(月) 01:24:49.10
>>609
参照は定義時に初期化しなければならない。まあやりたかったこととは違うだろうが。

struct A {
 int a;
 struct B {
  static int& a;
 };
 int f(){
  a = 10;
  B::a = a;
  return 0;
 }
};

A x;
int & A::B::a = x.a;

int main(void){
 A a;
 a.f();
}
0613デフォルトの名無しさん2012/03/19(月) 21:24:25.17
C++のステートパターンの骨組みというか
サンプルプログラムを教えてください。
0614デフォルトの名無しさん2012/03/19(月) 21:26:51.56
>>613
>>608
0615デフォルトの名無しさん2012/03/19(月) 22:15:48.44
>>613
ttp://codepad.org/zJKMXKy9
概念を理解できてれば多言語のソースでもなんとなく読めるはずだがな
0616デフォルトの名無しさん2012/03/19(月) 22:48:35.81
>>615
本質的なところじゃないけど、deleteしようぜ
0617デフォルトの名無しさん2012/03/24(土) 13:51:17.47
構造体内部に関数って入れられるんだっけ?
0618デフォルトの名無しさん2012/03/24(土) 14:14:55.96
C++だからstructで定義するものもクラス
0619デフォルトの名無しさん2012/03/26(月) 20:12:58.72
C++だとunionもクラスなの?
0620デフォルトの名無しさん2012/03/26(月) 20:42:27.78
ポリモルフィズムの概念がない
0621営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 15:29:17.65
ポインターについて質問です。

*p++

>この文では最初にp をインクリメントし、次に新しいメモリアドレスにある
>値を得ます。

と、いう説明がありますが、"次に新しいメモリアドレスにある値" の意味が
わかりません。 仮にp に格納されているアドレスが100番地 だったとすると、
それが+1(char の場合) されて101 となるだけではないのでしょうか。
0622営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 15:54:39.35
>>621
いいえ違います
0623営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 17:00:17.86
>"次に新しいメモリアドレスにある値"
その例では、101にある値。
0624営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 17:02:07.88
>>622
ではどういう動作をするのでしょうか。詳しくお願いします。
0625営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 17:13:32.58
>>623
なんとなくわかりましたが、101番地にある値が"得られる" というのが
いまいちしっくり来ません。 ひょっとしてこれは、ポインターが+1 されて、
それ以降、そのポインターを使ったときは、101 番地のデータが読める、
という意味で"得られる" と書かれたものだと解釈してよいでしょうか。
0626営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 17:30:40.63
>>625
演算子の優先順位が
 後置インクリメント(++) >> 前置インクリメント(++) >> 間接参照(*) >> 乗算(*)

この場合は
 *p++ = *(p++)

メモリ内容が以下だとすると
ADDRESS VALUE
0x00401000 0x0123
0x00401004 0x0456
0x00401008 0x0789
0x0040100C 0x0ABC

DWORD* p
p = 0x00401004   *p は 0x0456
p++
p = 0x00401008   *p は 0x0789
0627営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 17:33:49.60
あ、最後のp = 0x00401008
の "=" は代入じゃなくて p が指す物を示す
0628営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 19:02:19.38
>>626
具体的な例を挙げてくださり、ありがとうございます。
演算子の優先順位を忘れていました。カッコをつけるとわかりやすいですね。

ただ、残念ながらおっしゃっている事がまだ理解できません。
*p++ ・・・この文が、何かの変数や関数への代入文に使われているのなら、
「ポインターを+1 されたアドレスのデータを何かに代入しているんだな」 と
思えるのですが、参照している教科書には *p++ とだけしか書かれておらず、
何かに代入しているわけではないのです。
だったら * は不要で、 p++ だけでいいのでは? と思います。

ど素人の低レベルな質問で意味不明かもしれませんが、なにかヒントを下さい。
0629営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 19:07:33.60
>>628
前後のコードもしくは文章plz
0630営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 19:21:45.24
>>629
独習C から、該当部分を引用します。

>ポインタそのものに対してだけでなく、ポインタが指しているオブジェクトに
>対してもインクリメント演算子やデクリメント演算子を使用する事ができます。
>しかし、ポインタが指しているオブジェクトをインクリメントしようとするときには
>注意してください。 例えば、値1 の整数を指しているp があるとします。
>次の文を実行するとどうなるでしょうか。
>
> *p++
>
>予想は当たったでしょうか。この文では最初にp をインクリメントし、次に
>新しいメモリアドレスにある値を得ます。ポインタが指しているものを
>インクリメントするためには、次のような式を使わなければなりません。
>
> (*p)++
>
>かっこをこのように使うことによってp が指している値をインクリメントすることが
>できます。
>また、関係演算子を用いれば、2つのポインタの値を比較する事ができます。
>もちろん、ポインタの比較は、それが相互に関連している、つまり、同じ型の
>オブジェクトを指しているような場合に、初めて意味を持ちます。

以上該当部分です。何か重要な情報がありますでしょうか。
0631営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 19:35:48.07
>>630
書いてるまんまだろ

参照先をインクリメントしたいときは (*p)++ と書け
*p++ と書いたらポインタ自体をインクリメントすることになる
って言ってるだけ

*p++ のコード自体に筆者の言いたい意味があるわけじゃない
0632営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:05:42.47
>>631
>*p++ のコード自体に筆者の言いたい意味があるわけじゃない

なるほど。ここまで読み進めてきて、はしょった表現がなかったものですから、
勘違いしていたようです。 どうもありがとうございました。
0633営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:10:08.38
*p++ って、もはや定型的な書き方なのさ。
0634営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 22:44:18.36
>>630
>> *p++
>>
>>予想は当たったでしょうか。この文では最初にp をインクリメントし、次に
>>新しいメモリアドレスにある値を得ます。

「インクリメント前のメモリアドレスにある値を得た後、pをインクリメントする。」だろ?
0635営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 18:34:04.05
なんだか勘違いしそうな説明が続いてるなw

例えば、
int a[4] = { 0,1,2,3 };
int* p = a;

int n = *p++;
int m = *(p++);

ってすると、n = 0, m = 1 になるんだぜ。
上の説明だけでは納得できないだろ?w

0636営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 19:22:47.06
>>635
いや、大体わかったつもりです。

int n = *p++
// 配列a の先頭番地のデータ(0) をn に代入し、その後インクリメントされる。

int m = *(p++)
// p は+2 されているので、データ(1) がm に代入され、その後インクリメント。

これらの文が処理された後、p はデータ(2) の番地を指している。

・・こういう解釈であっていますよね。
0637営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 19:32:19.53
>>636
nもmも式評価のときは*pで++は*よりも優先順位が高いから
結合するのはどちらもpだけってことだろ?
0638営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 19:42:30.17
>637
すいません、本当に素人で、釣りをしているわけではありません。
直球ど真ん中のマジレスでお願いします。
そこであえて質問ですが、"結合" とは、この場合どういう意味でしょうか。
0639営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 19:44:20.68
疑問に思ったところは6章のポインタで
>>636のいいたいインクリメントについては2章制御文その1でやってるから大丈夫だろ
ってかインデックス見ようと翔泳社見たら独習C絶版なのな
独習C++ってC読んでること前提で書かれてなかったっけ?
0640営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 19:57:11.02
>>638
その演算子がある項に作用すること

後置インクリメント++の場合、単項演算子で結合性は右から左
また優先順位は参照演算子*よりも高いので
この場合(*p++)は++の左にある単項、pに作用する
後置インクリメントは評価後にインクリメントされるので
この式(*p++)自体の結果は*p

これでいい?
0641営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 20:49:01.75
>>640
160km/h のストライク。よくわかりました。今後ともよろしくお願いします。
0642営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 20:54:47.31
>>639
いや、絶版じゃないだろう・・・・・第3版のことか?
http://books.shoeisha.co.jp/book/b72093.html

独習C++が独習Cを読んでいる(C言語は既習である)ことを前提に書かれているのはその通り。
0643営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 21:02:35.80
>>642
おおスマン
見落としていた
0644営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 03:19:18.51
昨日からC言語始めたプログラム初心者です

四捨五入のプログラムで
例えば1.666を第3位で四捨五入すると1.670000って表示されるんだけど
これを1.67と表示させるにはどうやったらできますか?
0645営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 03:24:44.66
printf("%.2f",1.67);
0646営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 03:49:55.45
>>645
サンクス
0647営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 20:05:15.76
>>644
つ[ "%g"]
0648営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 17:20:56.61
CLRのコンソールのメイン関数って、Microsoft独自のモノですか?
それとも、C++の新規格のメイン関数なのですか?

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}
0649営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 18:25:56.69
>>648
該当スレできけば?
くだすれC++/CLI(初心者用)part2
http://toro.2ch.net/test/read.cgi/tech/1268613679/
0650営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 18:34:32.79
>>648
そもそもnamespace Systemなんて標準のC++にはないよ。
0651営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 18:50:39.50
CLIで探せばよかったのですね。Thanx!
0652営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 20:26:16.99
c++簡易ブラウザーを作りたい
boost::asioでソケット周りできた。クッキーも仕様書みながらある程度できた。
javascriptはECMAScriptと戦わないとだめなのか?
0653営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 20:41:16.75
モジラやググールのを使え
0654営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 21:04:59.82
V8が面白そうだ。先は長いな…
0655営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 00:36:28.03
DOMをやるのかやらないのかでだいぶ違う
ブラウザの進化の過程をたどるか、あるいは新発想のアーキテクチャでいくか。
ある程度の完成物を狙うなら、いったん、V8なり、JSCなりを呼ぶ実装がいい
そもそも、JavaScriptエンジンのインタフェース自体から、学ぶ点がある
0656営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 16:48:33.44
ECMAScript - Wikipedia
http://ja.wikipedia.org/wiki/ECMAScript

0657デフォルトの名無しさん2012/04/14(土) 15:40:27.10
int a=ランダム値;
bool flag;
if(a==1 || a==42 || a==145)flag=true;

↑こんな感じのことをやりたいんですが、
(a==1 || a==42 || a==145) ←ここのとこを簡単に書く方法ってないですかね?
例えば
(a==(1 || 42 || 145)) みたいな。(これじゃ当然無理ですけど)

何か方法があれば教えて下さい。よろしくお願いします。
0658デフォルトの名無しさん2012/04/14(土) 15:46:14.83
bool check(int const a)
{
static const int checkers[] = {1, 42, 145};
for (int ic = 0; ic < sizeof(checkers) ? sizeof(* checkers); ++ic) {
if (a == checkers[ic]) return true;
}
return false;
}

bool flag = check(a);
0659デフォルトの名無しさん2012/04/14(土) 22:09:09.10
最終的に吐き出されるバイナリが、結局、
(a==1 || a==42 || a==145) みたいなことになるんだろうから、
(a==1 || a==42 || a==145) で十分に簡潔と言えるんじゃなかろうか。

もちろん、そんなクジみたいな抽選をやたらとあちこちで実行してるなら、
全体的に読みやすいように、書き様はあると思うが。マクロとかで。
0660デフォルトの名無しさん2012/04/14(土) 22:10:54.95
こうなら書けるな 発想の転換の一助になれば。

flag=false;
select(i){
case 1: case 42: case 145: flag=true;
}
0661デフォルトの名無しさん2012/04/14(土) 22:25:07.23
<< とか使う
0662デフォルトの名無しさん2012/04/14(土) 23:48:08.59
bool operator,(〜)とか使う
0663デフォルトの名無しさん2012/04/15(日) 00:10:01.79
bool f(int a){
struct ck{ck(int a):v(a),t(false){}ck&operator,(int a){t=t||a==v;return*this;}operator bool(){return t;}int v;bool t;};

return ck(a),1,25,142; }
0664デフォルトの名無しさん2012/04/15(日) 00:23:45.95
可変長引数でチェック関数作るとか
0665デフォルトの名無しさん2012/04/15(日) 08:09:44.01
flag = (a==1 || a==42 || a==145);
が、一番シンプルに見えるわけだがw
0666デフォルトの名無しさん2012/04/15(日) 14:31:40.48
Perl6のJunctions風の何かを作るといいのかな
0667デフォルトの名無しさん2012/04/15(日) 21:22:35.70
D言語のlazy 相当の機能が有ればなあ
06685432012/04/18(水) 22:11:53.62
0〜999の番号を10000の要素にランダムに割り当てるときに
各番号が10回ずつ(各番号が同じ回数という意味で)出てくるように割り振りたいのですが
なにかいい方法ありませんか?
0669デフォルトの名無しさん2012/04/18(水) 22:16:13.58
vectorに突っ込んでrandom_shuffle
0670デフォルトの名無しさん2012/04/18(水) 22:20:46.95
>>669
そのような関数があったんですね。勉強になります!
ありがとうございました。
0671デフォルトの名無しさん2012/04/18(水) 22:28:39.71
質問です
C言語でマイクから入力した音声を送信する方法
もしくはマイクから入力された音声がどこに保存されているかを教えてください
0672デフォルトの名無しさん2012/04/18(水) 22:43:31.86
環境も書かずになんて間抜けな質問を……
0673デフォルトの名無しさん2012/04/18(水) 23:00:22.03
失礼しました
環境はbcpadです
0674デフォルトの名無しさん2012/04/19(木) 00:00:32.77
WindowsならmmsystemだからWin32APIスレで聞いた方がいいだろ
0675デフォルトの名無しさん2012/04/19(木) 06:51:33.03
>>674
情報ありがとうございます!
0676デフォルトの名無しさん2012/04/19(木) 14:52:44.05
コマンド・ライン引数でargc と argv というのが伝統的に使われている
そうですが、それぞれの語源(何の略) か、教えてください。
0677デフォルトの名無しさん2012/04/19(木) 15:05:36.01
argument count value
0678デフォルトの名無しさん2012/04/19(木) 15:26:44.81
>>677
ありがとうございます!
0679デフォルトの名無しさん2012/04/19(木) 21:37:51.52
VC++をつかってC言語でLifeGameを書こうとしてみたのですが、
0680デフォルトの名無しさん2012/04/20(金) 01:33:52.49
セルがモニタから飛び出して勝手に増殖し出してしまって、
0681デフォルトの名無しさん2012/04/20(金) 02:54:49.21
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
0682デフォルトの名無しさん2012/04/20(金) 03:00:54.75
罠を張って待っていることも知らずに、

↑なーんてなことを書き出してしまって、
0683デフォルトの名無しさん2012/04/20(金) 04:06:50.55
【そりゃないよドコモさん】ドコモが日本通信に提訴された経緯
http://weekly.ascii.jp/elem/000/000/084/84599/
 ドコモは「必要な費用」と説明したとのことですが、その費用はそもそも算定式に含まれているはず、
というのが日本通信側の主張です。
 このため日本通信が差額の支払いを一時停止したところ、ドコモ側は「接続を切断する」と回答。
結果、ユーザーへの影響を考慮して、日本通信側はドコモ側の要求どおりの支払いを続けている、
というのが今の状況です。
0684デフォルトの名無しさん2012/04/24(火) 06:23:00.54
宿題で出されたこの問題が分からないのですが、誰か教えてくれませんか。

1〜9までの連続する数字の間に和・差・積の演算子(+, -, *)を適当に入れて、
式の値がちょうど 100 となる例を挙げよ(10とおりだけ書け)。

たとえば、
 1 + 2 * 3 * 4 * 5 + 6 * 7 - 8 * 9 = 91
というような計算をする。ただし、この例では式の値が91となるので答えではない。
0685デフォルトの名無しさん2012/04/24(火) 06:33:39.44
このスレに何の関係が
0686デフォルトの名無しさん2012/04/24(火) 06:35:50.34
ごめんなさい、宿題スレに書き直してくるので無視してください
0687デフォルトの名無しさん2012/04/24(火) 06:55:17.27
eval() を実装しろという問題だな

webサービスを呼ぶ、でもいい
0688デフォルトの名無しさん2012/04/25(水) 00:26:53.55
csvのデータを読み込み、このデータセットの平均値Ave を求めて
標準出力するCプログラムを書きたいのですがどうすればいいですか?
0689デフォルトの名無しさん2012/04/25(水) 00:36:54.63
まず深呼吸します
0690デフォルトの名無しさん2012/04/25(水) 07:58:46.21
宿題レベルの質問に見えるが、csvに何が詰まってるかによるな(22,2Cの扱い)。

出題者が、データはこれな。って言ってきてないか。
0691デフォルトの名無しさん2012/04/25(水) 14:26:18.67
図書館でプログラミング作法を借りてくる
0692デフォルトの名無しさん2012/04/25(水) 16:16:06.77
C言語で、できるだけ簡単な文法だけを用いて、「ある数列から重複している値があれば取り出す」という関数を作りたいのですが、どうすればいいのですか?
0693デフォルトの名無しさん2012/04/25(水) 16:36:07.14
>>692
数列は長いか?(数万件)
数値範囲が予測できるか?
範囲が狭いか?(1~10など)
小数点以下も必要か?
で方法が違う。
0694デフォルトの名無しさん2012/04/25(水) 16:38:59.09
>>692
CSTLのsetを使う
0695デフォルトの名無しさん2012/04/25(水) 16:52:07.30
回答ありがとうございます。

数列は、int型で自由に入力したものになるので、長くなる可能性があります。
値の範囲は予測できません。
小数点は利用しません。
0696デフォルトの名無しさん2012/04/25(水) 17:24:24.59
要はエスパー待ちて事だな。
0697デフォルトの名無しさん2012/04/25(水) 17:26:40.06
>>692
「重複している値があれば取り出す」とあるが、例えば「1,1,1,1,1」という数列があったとき、
1は1回だけ取り出されるのか、それとも4回取り出されるのか。
0698デフォルトの名無しさん2012/04/25(水) 18:08:25.02
どっちでもいいじゃん

for (i=0; i<N; ++i) {
IntSet_insert(tmp, data[i], &success);
if (!success) {
IntSet_insert(s, data[i], NULL); //1回だけの場合
IntList_push_back(l, data[i]); //複数回の場合
}
}
0699デフォルトの名無しさん2012/04/25(水) 18:21:15.51
取り出すってどういうことを言ってるんだろうか
0700デフォルトの名無しさん2012/04/25(水) 18:33:23.57
>>699
日本語の問題だな。
取り出す→Action
抽出、除外→Process
0701デフォルトの名無しさん2012/04/25(水) 18:46:10.92
配列から取り出して元の配列の要素数を減らすのか、取り出したものを別の配列に入れて再利用するのか
0702デフォルトの名無しさん2012/04/27(金) 04:00:59.03
set<int>にinsertしていって、戻り値でカウントするのが一番簡単だろ。
で、値をキーとしたmap<int value,int count> あたりに保存しておけば、
後はどんな要求にでも応えられるだろ。
0703デフォルトの名無しさん2012/04/27(金) 10:38:56.91
> 数列は、int型で自由に入力したものになるので、長くなる可能性があります
これはバッファオーバーランしてくださいって言ってるようなもので、
出てきた数値を逐一記憶するタイプの解法ではどんな巨大なメモリとディスク搭載したマシンでも仕様を満たせない。
唯一の可能性は重複する数値だけで構成される数列を生成する数式を見つけること。
0704デフォルトの名無しさん2012/04/27(金) 14:39:07.54
計算したデータをテキストファイルに出力するプログラムを作っています。
出力する行数が多い場合のやり方として、常套手段があれば、教えてください。

一行文字列を作ったら、ファイル書き込みか、
全行文字列を作ったら、一気にファイル書き込み。

メモリーが気になるので、前者で行いたいのですが、
計算途中でも出力する文字列があるので、迷っています。


0705デフォルトの名無しさん2012/04/27(金) 14:46:47.66
速度だったら256、512Kくらいずつ書き出すのが速い。バッファ。
多くしすぎてもかわらない。
0706デフォルトの名無しさん2012/04/27(金) 14:51:50.24
およそこんな風だ。これだとバッファの残りが出力されないから、クラス化してデストラクタ使うと良い。

lineout( string str) {
string buf;
if( buf.size()+str.size() > 256*1024) { buf、str出力; buf.resize(0); return; }
buf+=str;
}
0707デフォルトの名無しさん2012/04/27(金) 14:53:29.15
こうだな。これをクラス化。

lineout( string str) {
static string buf;
if( buf.size()+str.size() > 256*1024) { buf、str出力; buf.resize(0); return; }
buf += str + (string)"\n"; }
0708デフォルトの名無しさん2012/04/27(金) 15:00:20.54
>>704
昔のVBとかだったら1文字ずつ書き出すとそのたびにディスクアクセスしてたりするが、
OSやライブラリによっては自分でバッファ持って適当にまとめて書き込んだりするし、
今どきの1GBや2GBがデフォのPCではテキストがどれだけ膨れ上がろうが気にならない。

一番プログラム書きやすい形でやるのが常套手段ともいえる。
0709デフォルトの名無しさん2012/04/27(金) 15:07:00.96
WindowsXPだとまとめて書き出す方が速い。OSのバッファを使ったとしても。
OSが優れていればこのようなツールはいらない。


FastCopy
H.Shirouzu(白水啓章)
特徴:
Windows系最速のファイルコピー&削除ツールです。
Read/Write も、OS のキャッシュを全く使わないため、他のプロセス(アプリケーション)が重くなりにくくなっています。
可能な限り大きな単位で Read/Write するため、デバイスの限界に近いパフォーマンスが出ます。
MFC 等のフレームワークを使わず、Win32API だけで作っていますので、軽量&コンパクト&軽快に動作します。
全ソースコードは BSD ライセンスで公開していますので、VC++ 等をお持ちであれば、ご自由にカスタマイズしてのご利用も可能です。
0710デフォルトの名無しさん2012/04/27(金) 15:10:21.23
>>709
有意な差があるのか?
0711デフォルトの名無しさん2012/04/27(金) 15:12:19.05
宣伝かよ作者うぜえな
0712デフォルトの名無しさん2012/04/27(金) 15:28:55.51
>速度だったら256、512Kくらいずつ書き出すのが速い。バッファ。
なるほどです。これだと、ファイルを意識しなくてもスムーズに
出力できます。ありがとうございました。
0713デフォルトの名無しさん2012/04/27(金) 15:42:03.21
>>710
自分は安定性がいいので使っているが、調べると速度も良いらしい。


ファイルのコピー&削除が抜群に速い---「FastCopy」:PC Online
http://pc.nikkeibp.co.jp/article/special/20081114/1009723/


手間というほどのことはないのに、どうしてわざわざツールを開発する必要があったのか。
そんな疑問を抱きながら、家族旅行のときに撮影した映像(動画)ファイルをコピーしてみた。
ファイルの容量は、440メガバイト。
普通にエクスプローラでCからDドライブへコピーしたところ、40秒かかった。
ところが「FastCopy」を使ってみると、なんとたったの16秒で終わってしまった。2倍以上の速さでコピーできたわけだ。
0714デフォルトの名無しさん2012/04/27(金) 15:51:10.84
>>713
勉強になったわ。
ありがとう。
0715デフォルトの名無しさん2012/04/30(月) 03:37:10.46
実際どんなのが作れるの?
0716デフォルトの名無しさん2012/04/30(月) 06:47:09.53
WindowsもLinuxもつくれます。なんでもつくれます
0717デフォルトの名無しさん2012/04/30(月) 07:35:03.89
ハードは作れまい。と言いたい所だが、
SystemCだのいって、ハードもCもどきで書いちゃうし、
シミュレータもたぶんC(こいつは根拠なし)。

いたるところ、地味にCでできてます
0718デフォルトの名無しさん2012/04/30(月) 10:44:50.70
afxinetを使って通信部分のプログラムを書いているのですが、
クッキー関連がどうもうまくいきません。

m_pFile->AddRequestHeaders(_T("Connection: Keep-Alive"), HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD );
m_pFile->AddRequestHeaders(_T("User-Agent: TestAgent"), HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD );
m_pFile->AddRequestHeaders(_T("Cookie: visited=100"), HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD );

と設定後にSendRequestして、HTTP_QUERY_FLAG_REQUEST_HEADERSでQueryInfoしたところ、
上2つはきちんとヘッダに記述されているのですが、Cookieは書かれていませんでした。
クッキーは何か特別なんでしょうか?
OSはWindows7で、IEのVerはIE9ですが、もしかしてIEの保護云々の問題?
なにか知っている点があれば教えていただきたいです。
0719デフォルトの名無しさん2012/04/30(月) 10:57:17.49
curlつかっとけ。マルチプラットホームだしPHPの通信機能でも使われ信頼性もある。
0720デフォルトの名無しさん2012/04/30(月) 10:59:05.14
クッキーは自前でハンドルする的なオプションが必要
0721デフォルトの名無しさん2012/04/30(月) 11:41:55.93
void (*ptr)();

これって何をしてるんですか?
void型のポインタ変数を宣言してるんだと思うんですけど

なんで*ptrが()にはいってるのか、その後に()ついてるのかがわかりません。
*ptrの括弧をとると以下のエラーがでて
030.c:10:9: error: lvalue required as left operand of assignment

後ろの括弧をとると以下のエラーがでました。
030.c:11:6: warning: dereferencing ‘void *’ pointer [enabled by default]
030.c:11:11: error: called object ‘*ptr’ is not a function
0722デフォルトの名無しさん2012/04/30(月) 11:43:11.39
関数ポインタってやつです
ぐぐれば詳しい説明がどっかにあるだろう
0723デフォルトの名無しさん2012/04/30(月) 12:04:53.25
>void型のポインタ変数を宣言してるんだと思うんですけど

違う
0724デフォルトの名無しさん2012/04/30(月) 12:07:26.43
voidを返す(=値を返さない)、引き数を明示しない、関数へのポインタ、ptrの宣言。
0725デフォルトの名無しさん2012/04/30(月) 12:35:36.80
関数ポインタみてきました。ありがとう。
0726デフォルトの名無しさん2012/04/30(月) 12:36:43.01
よく訊かれる質問、 特に、主として C 言語を利用しているプログラマの方からの質問なのですが、
「C# は初入門の言語として適切か」と言うものを受けることがあります。

多いのは、 「C 言語 → C++ というように段階を経て学んでいくべきなのではないか」という意見です。
「Java や C# だと、class や static など、最初に説明しないといけない“おまじない”が多いし・・・」とか、
「Java や C# などのオブジェクト指向言語を学ぶにしても、 その基本は構造化プログラミング言語だし」というのが、
これらの意見の理由です。

この質問に対する(僕個人の私的な)答えですが、 結論から言うと、初めから C# を学ぶ方がいいと思います。

例えば、C 言語なら最初から理解するのが難しい“おまじない”の部分がないかと言うとそんなはずもなく、
#include などはやはり“おまじない”ですし、 Java や C# などの新参の言語は、
構造化プログラミング言語としても見た場合でもかなり優秀な言語です。

むしろ、C 言語など、長い歴史を持つ言語は、 昔からの悪習を引きずっていて、
下手に学ぶと悪い癖が付いたまま抜けなくなる危険性の方が高いです。
0727デフォルトの名無しさん2012/04/30(月) 12:44:12.48
そうですね
0728 ◆QZaw55cn4c 2012/04/30(月) 13:01:39.12
>>726
C の悪臭もとい悪習ってなんでしょうね。ちょっと興味深い。
0729デフォルトの名無しさん2012/04/30(月) 13:21:12.54




ネット掲示板で無関係の人の実名をあげた数名が訴えられたぞww


http://hayabusa.2ch.net/test/read.cgi/news4vip/1335714960/230



お前等、IP確認しとけよwwwwww





0730デフォルトの名無しさん2012/04/30(月) 18:25:31.83
ありがとうございました!

>>719
ちょっとググってみたらcurlってCでも使えるんですね。
昔Linuxで見たことがあったので勘違いしてました。
詳細調べてみます。

>>720
なるほど、どこかでそのオプションを設定する場所があって
それを行わないと上書きされないってことですね。
そちらもちょっと調べてみます。
0731デフォルトの名無しさん2012/04/30(月) 20:59:53.95
>>726
CもC#もやればいい ただ、「付いてくる」ライブラリが全然違うわけで、
たぶん、両方やってると、「…ああー。それでC#かー」って悟りが開けるんだろうか

どとねと系は食わず嫌い。やっぱ、自称C厨の俺がやるんなら、C++/CLIかなあ。
0732デフォルトの名無しさん2012/04/30(月) 21:07:59.73
つ IronPython
0733デフォルトの名無しさん2012/04/30(月) 21:50:36.49
Javascriptが世界を支配する日 - DQNEO起業日記
http://dqn.sakusakutto.jp/2012/04/javascript_14.html

もう氏ねよこいつら。最近のウェブ屋ども頭おかしいわマジで。

JavaScriptのVMは何の言語で書かれてるの?
てめえの使ってるブラウザは何の言語で書かれてるの?
てめえの使ってるOSは、デバイスドライバは、何の言語で書かれてるの?
JavaScriptで書かれてる業務系や基幹システムどれだけあんだよ?小数点切り捨てたら0%じゃねえの?
科学技術計算は?ゲームプログラムは?コンピュータグラフィックスは?
0734デフォルトの名無しさん2012/04/30(月) 22:11:52.59
それをいうなら、これだけJScript(VM)が洗練されてるのに、
なにかというとスクリプト部分はVBSで書いてくるMSに何か言ってやってくれw

Write once, run anywhere の理想に近づいてるのは、いまやJSと。
そしてもちろん、その屋台骨を支えてるのはC/C++と。

両方制覇しちゃえばいいのだ。
0735デフォルトの名無しさん2012/05/03(木) 19:30:49.58
学校でcプログラミングを習い始めたのですが、家でもやりたいなぁと思いました

なにか初心者におすすめのソフトウェア(テキストエディタ?コンパイラ?みたいなやつ)ありますか?
0736デフォルトの名無しさん2012/05/03(木) 19:33:59.27
gcc
0737デフォルトの名無しさん2012/05/03(木) 19:34:32.87
winならVC++がメジャーかと
0738デフォルトの名無しさん2012/05/03(木) 19:38:25.88
eclipse+cdt
0739デフォルトの名無しさん2012/05/03(木) 20:02:41.68
mac
0740デフォルトの名無しさん2012/05/03(木) 20:12:18.27
VC2010EE
0741デフォルトの名無しさん2012/05/03(木) 20:14:09.35
LSI C-86 w
0742デフォルトの名無しさん2012/05/03(木) 22:05:34.77
結局これだけいろいろあるので、習ってるときに使ってるのと同じにすればいい

C でありがちな、「そのコンパイルエラーどっから来てる?」の癖も掴みづらいし
0743デフォルトの名無しさん2012/05/03(木) 22:33:38.69
変な癖つけると、その環境で一生過ごすことになる
0744デフォルトの名無しさん2012/05/03(木) 22:37:31.66
mingwのccを気軽に差し替えられる野良Clangがあればいいんだけどねー
0745デフォルトの名無しさん2012/05/04(金) 02:59:09.38
なぜビットフィールドは構造体でしか使えないのでしょうか?
普通の変数と同じように宣言(例えば"unsigned bool :1;"など)と
することは出来ないのでしょうか?
0746デフォルトの名無しさん2012/05/04(金) 03:43:37.68
>>745
ビットフィールドを構造体で使っているのではなく、
構造体の書式構造をビットフィールドの表記に流用しているだけです。
つまり、structと書いてあっても厳密な意味での構造体とは違います。
0747デフォルトの名無しさん2012/05/04(金) 10:36:43.68
厳密な構造体の厳密な意味を教えてくれ
07487452012/05/04(金) 11:35:55.39
>>746
ありがとうございます!少し分かってきた様な気がするのですが、まだいまいち分かりません・・・。
例えば以下のコードはビットフィールドと厳密な意味での構造体どちらになるのでしょうか?
struct {
unsgined char byte0;
unsigned char byte1;
unsigned bit: 0;
} test;
また「厳密な意味での構造体」の定義などについて詳しく教えて頂けると嬉しいです _ _
0749デフォルトの名無しさん2012/05/04(金) 12:44:30.66
「構造体のメンバーに対してビットフィールドを使用できる」と理解してた
0750デフォルトの名無しさん2012/05/04(金) 12:53:57.31
ビットフィールドは環境依存する。不便でもビット操作にしとけ。
何バイト確保されるかで大きく差が出る。
07517352012/05/04(金) 12:57:27.14
家のはwindowsで、学校ではLinuxを使ってます

いろいろありますね・・・
最初なんで、学校で使ってるEmacsか
メジャーらしいVC++か、ですかね
0752デフォルトの名無しさん2012/05/04(金) 13:02:06.15
LSI-Cとかいう8か16ビットのヘボじゃないければなんでもいい。
0753デフォルトの名無しさん2012/05/04(金) 13:21:46.31
>>752
森 公一郎さんにあやまれ
0754デフォルトの名無しさん2012/05/04(金) 14:43:09.47
寧ろpnoriさんに謝るべきかも。
0755デフォルトの名無しさん2012/05/04(金) 14:43:38.53
>>751
てかマルチやめろ
0756デフォルトの名無しさん2012/05/05(土) 17:48:15.54
スレ違いだったらごめん。
C++とDirectXを使ってアプリ作るのが最終目標なんですけど、以前誰かにC++やるならC覚えてからにしろって言われて
ずっとCの勉強をチマチマしてるんですけど
実際C++を勉強する上でCの知識って重要ですか?
どこまでCの勉強して、いつからC++に入ればいいのやら・・・
0757片山博文MZボット ◆0lBZNi.Q7evd 2012/05/05(土) 17:53:34.44
>>756
C言語の関数とポインタと構造体が完全に理解できる
ようになったら、C++に進んでいい。
0758デフォルトの名無しさん2012/05/05(土) 20:18:50.07
我流なら、とにかくC++を【要求する】APIを使っていくことじゃないかな
そしてときどき、Cの教科書を読み返すと、知識が整理されていく

リアの後輩なら、そこで悩む前に、x86の汗の主な命令を覚える気でいろと言いたい
逆汗を読解できる水準で十分だし、必要ならそこからいくらでも伸びていく
0759デフォルトの名無しさん2012/05/05(土) 22:10:47.54
>>756
実はC++の表っ面だけならCを知らなくてもいいんだが
C++である程度踏み込むと結局Cの知識も要るし
何よりC++向けの資料はほとんどがCも習得してることを要求する
07607562012/05/06(日) 11:16:06.68
ありがとうございます。
ポインタ…C++になっても必要なんですね。関数と構造体は普段Javaでやってる分理解は早いかも
自分のイメージではJavaのオブジェクトと構造体って変わらないイメージがあります。
0761デフォルトの名無しさん2012/05/06(日) 11:20:49.82
構造体の機能は、すべてクラスで実現できるから、構造体に詳しくなる必要なし。
ほぼ同じだし、クラスがわかれば構造体もわかる。
0762デフォルトの名無しさん2012/05/06(日) 11:27:41.27
c++の機能はどなくてもプログラムかけるから基本いらない
他人と開発するときに必要になったものを理解していけばいい
0763デフォルトの名無しさん2012/05/06(日) 11:36:27.14
C++不要説だったら、C言語不要説も成り立つわけだが。
そしたらアセンブラも不要説も成り立って、ビット列でプログラム書くのが一番という説になるな。
0764デフォルトの名無しさん2012/05/06(日) 18:36:28.36
まぁ、AltairとかTK-80があるくらいだからな。C/C++とか
あんなの飾りです。偉い人にはそれがわからんのですよ。
0765デフォルトの名無しさん2012/05/06(日) 20:58:21.68
ポインタをうまく扱うことに、C++を使ってもいいんだ

C++は究極的にはC/汗に落とし込めるわけだから、
C++などなくても、プログラミングができるというのは正しい

C++を使う理由は、C++を使うとスマートに書ける場面のあること、
あと、C++を要求するAPIの存在。


まあいいんだよ、まずは我流でいいから覚えちまえ
0766デフォルトの名無しさん2012/05/10(木) 10:46:14.63
/*/ hogehoge /*/
としたコメントアウトを目にしましたが、これはどういう意味があるのでしょうか?
0767デフォルトの名無しさん2012/05/10(木) 11:14:32.36
>>766
書いた奴に聞け。
何かツールで必要とする書式か、さもなきゃ検索用のおまじないだろ。
0768デフォルトの名無しさん2012/05/10(木) 12:24:13.87
コメント内に/*があるのはよくない
0769デフォルトの名無しさん2012/05/10(木) 12:32:56.38
かっこいいと思って書いてるような気がする
ツールで必要とするとしてもこんな間抜けな書式はあり得ないと思う
0770デフォルトの名無しさん2012/05/10(木) 12:46:39.78
文法上問題無いだろ。
/* と */の間は何でもコメント。/が入ってもコメント。
0771デフォルトの名無しさん2012/05/10(木) 12:54:10.28
ヒント:
コメントをネスとしてしまうコンパイラも在る。
0772デフォルトの名無しさん2012/05/10(木) 12:54:30.45
s/ネスと/ネスト/
0773デフォルトの名無しさん2012/05/10(木) 13:13:12.79
>>770
コメントのネストを許すか許さないかで状況が変わってしまうような
書式を使用する時点で間抜けな書式なんだよ
0774デフォルトの名無しさん2012/05/10(木) 13:17:39.98
#if endifをコメントに使うと便利。/* */は複数回使うと意図しない動作になる。
0775デフォルトの名無しさん2012/05/10(木) 15:49:36.70
// /*
処理
// */

も最初の//をつけ外しすれば便利。

JSで多用してる。
0776デフォルトの名無しさん2012/05/10(木) 16:11:39.25
素直に
// 処理
の付け外しでいいよ
0777デフォルトの名無しさん2012/05/10(木) 17:34:18.04
if(0){ }
0778デフォルトの名無しさん2012/05/10(木) 18:00:18.54
いや、省略したが処理が20行くらいあるんだわ
0779デフォルトの名無しさん2012/05/10(木) 18:17:15.17
20行くらいエディタのマクロであっという間
0780デフォルトの名無しさん2012/05/10(木) 18:50:53.61
つーか、そういうときこそ
#if 0
#endif
で囲めよ。ちなみに、C#なら#if falseな。
0781デフォルトの名無しさん2012/05/10(木) 19:26:54.62
>>766
その文をコメントアウトしている現状ではその前後の文を実行するが
その文を実行したいときにはその前後の文を実行したくないのでは?
まあ、もしそうならプリプロセサ使ったほうが良いとは思うけど…
0782デフォルトの名無しさん2012/05/10(木) 19:47:10.68
>>780
何これ便利すぎwwワロタwww
0783デフォルトの名無しさん2012/05/10(木) 22:10:07.83
#オープンソースのコードを見て勉強しています。

// こちら自分のコード。ターゲットウインドウにキーメッセージを送る。ターゲットに届いてることはデバッガで確認済み。
void KeyEventDown(BYTE key,double wait){
::SendMessage(targetWnd,WM_KEYDOWN,key,NULL);
Sleep(wait);
};
void KeyEventUp(BYTE key,double wait)
{
::SendMessage(targetWnd,WM_KEYUP,key,NULL);
Sleep(wait);
}
0784デフォルトの名無しさん2012/05/10(木) 22:10:35.88
//こちら、他人様の書いたコード(ターゲット側)
// ウインドウプロシージャ内の抜粋
case WM_KEYDOWN:
case WM_KEYUP:
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
{
ProcessKeyEvent((int) wParam, (DWORD) lParam);
}
// ここまでプロシージャ抜粋

// プロシージャで呼ばれている関数(ここがよく分からない)
inline void ProcessKeyEvent(int virtKey, DWORD keyData)
{
bool down = ((keyData & 0x80000000l) == 0);
:
}

というような形になっています。
0785デフォルトの名無しさん2012/05/10(木) 22:10:57.93
僕は、SendMessage()でWM_KEYDOWN/WM_KEYUPのときはlParamはNULLで送ればいいと思っているのですが
間違っていれば教えてください。
ターゲット側がlParamにビット演算?を使ってwParamのキーが押されたのか、離されたのかを判断しているようです。
このせいで、WM_KEYDOWNもWM_KEYUPも、ターゲット側で「押された」として判断されているような??
どのように送ってあげれば正しくターゲット側が解釈してくれますでしょうか?
(ターゲットはできれば弄らずに・・・)
よろしくお願いいたします。
0786デフォルトの名無しさん2012/05/10(木) 22:16:55.73
SendInput
07877832012/05/10(木) 22:39:47.01
SendInputを調べてみましたが、ターゲット側をフォアグラウンドにしないといけないのでしょうか?
事情によりそれは困ります。
ターゲット側を書き換えて、WM_KEYDOWN/UPによってdownの値を変えてみようかと思いますが、
けっこうコード量が多く複雑なので、関連する部分で不具合が出ないか心配です。。。
(ビット演算でやっている意味や、SendMessage()のlParamにXXを指定すれば通る、みたいな回答が欲しかったり・・・)
0788デフォルトの名無しさん2012/05/10(木) 23:22:42.98
keyDataに何が入ってるか調べた?
0789デフォルトの名無しさん2012/05/10(木) 23:54:07.49
>>785
> 僕は、SendMessage()でWM_KEYDOWN/WM_KEYUPのときはlParamはNULLで送ればいいと思っているのですが
> 間違っていれば教えてください。
間違ってるだろ
ttp://msdn.microsoft.com/en-us/library/windows/desktop/ms646280
ttp://msdn.microsoft.com/en-us/library/windows/desktop/ms646281
結果的に0でいいならそれでいいけど状態に合わせて適切なlParamを設定する必要がある
07907832012/05/11(金) 12:29:58.06
>>789
貴重な情報ソースありがとうございます。
「受け取り側は基本的に無視していい」とあるので、ネットのSendMessageの
サンプルのほとんどがlParamにNULLを渡していたのだと思います。(それで僕は、lParamは常にNULLで構わないと誤解した)
今回は受け取り側が"正しい"処理をしているので、きちんとlParamを作らないといけないのですね。
07917832012/05/11(金) 12:37:30.18
追加の質問です。
第一ビットを立てるには、lParam|=0x02 でOKでしょうか?
自分にとってはビット演算は可読性が悪く、まとめてやりたいので、
「boolは1ビット」ということを利用して、
struct BITS{
bool bit1;
bool bit2;
:
}
を用意して、それぞれbitXにtrueを代入して、lPalam=(LPARAM)bits などとしても問題ないでしょうか?
アラインというのを聞いたことあるので、BITSはバイト単位にそろえてBITS8、BITS16などにすれば安全でしょうか?
よろしくお願いいたします><
0792デフォルトの名無しさん2012/05/11(金) 12:42:12.55
>boolは1ビット
どこでこんなアホな考えを教え込まれたんだ
>それぞれbitXにtrueを代入して、lPalam=(LPARAM)bits などとしても問題ないでしょうか?
問題大ありだ
sizeof BITSしてみろ
07937832012/05/11(金) 13:07:16.09
>>792
調べてみたら、環境によってsizeof(bool)==sizeof(int)となるようですね。(bool使うほうがメモリの節約になると盲信していたので自分としては衝撃)
ちなみにVC2010ではsizeof(bool)は1でしたが、
考えを改めて、素直にビット演算を勉強します><

>Visual C++ ver4.2 では int 型と等しい、つまり sizeof(bool)==4 として扱われていました。しかし、最新の Visual C++ ver6 では、sizeof(bool)==1 として扱われ
ttp://seclan.dll.jp/dtdiary/1999/dt19990929.htm
0794デフォルトの名無しさん2012/05/11(金) 13:43:15.88
sizeofはビット数じゃなくてバイト数だってことを理解してるかどうかもあやしい
07957832012/05/11(金) 18:25:24.04
何度もすいません><
WM_KEYDOWNのlParamをNULLでなくちゃんと作ることにしました。
仮想キーからスキャンコードの取得はAPIがありましたが、
拡張キーかどうかの判断は自前でしょうか?
コンテキストコード、変換状態フラグは「WM_KEYDOWNのときは常に0」とありましたが、
WM_KEYUPのときはどうすればよいのでしょう?
0796デフォルトの名無しさん2012/05/11(金) 18:27:53.50
拡張キーのときはWM_KEYDOWNじゃなくて他のメッセージじゃなかったか
07977832012/05/11(金) 19:32:53.90
Spy++で確認したところ、
PostMessage()のWM_KEYDOWNメッセージで届いており、
十字キーの右を押したときは、lParamの拡張キーフラグが立っていました。
'a'や'b'では拡張キーフラグなしです。
07987832012/05/11(金) 19:43:01.19
初めてのビット演算(のテスト、右キー固定で拡張キーフラグ固定)やってみました。
WM_KEYDOWNはうまくいったと思いますが、WM_KEYUPのlParamがおかしいので教えてください

#自分で作ったlParamの値をデバッガからコピペしてWindowsの電卓で16進に直して、
#Spy++のログにあるlParamと同じか比較しています。
「0xC14D0001」が欲しいのに、「0xFFFFFFFFC14D0001」と出てきます。
おかしい部分を教えてください><

LPARAM lParam = 0;

bool repeatCount = true;
UINT scanCode = 0x4d; // 右キー固定
bool extend = true; // 拡張キー固定
bool contextCode = false;
bool repeat = 1;
bool stat = true;

lParam = repeatCount;
lParam |= (scanCode<<16);
lParam |= (extend<<24);
//lParam |= (contextCode<<29);
lParam |= (repeat<<30);
lParam |= (stat<<31);
0799デフォルトの名無しさん2012/05/11(金) 20:16:42.77
lParam |= (LPARAM)stat<<31;
0800デフォルトの名無しさん2012/05/11(金) 20:22:52.32
lParam=(DWORD)lParam;
08017832012/05/11(金) 20:30:22.56
すいません、どちらも変わりませんでした><
ちなみに、OSは64bit(Win7)でVCではWin32アプリを作る設定(のつもり)にしてるのですが関係ありますでしょうか?

電卓がおかしいだけで、SendMessage()で送っちゃっていいのでしょうか?
0802デフォルトの名無しさん2012/05/11(金) 21:00:41.79
関係ないね
0803デフォルトの名無しさん2012/05/11(金) 21:43:47.04
UINTのサイズは?
08047832012/05/11(金) 22:02:25.35
>>803
sizeof(UINT)==4でした。

「lParam |= (stat<<31); 」の代わりに、
「lParam |= 0x80000000;」ならいけるかと思って試しましたが、
結果は同じでした・・・。

#ちなみにWM_KEYDOWNのとき用のlParamは、32ビット目が0固定なので、
#処理しなくていいと思って「lParam |= (stat<<31)」をコメントアウトしています。
08057832012/05/11(金) 22:23:09.50
すいません、オオボケかましてました。
最初の「LPARAM lParam = 0;」が間違えですね。
「DWORD wLow = 0;」で作っておいて、ビット演算してから
最後に「LPARAM lParam = MAKE_LPARAM(0,wLow);」かな・・・。
0806デフォルトの名無しさん2012/05/12(土) 00:26:11.63
下記のようなコードがたくさんあるので、マクロで楽をしたいです。

static ImageStruct *hogeButtonImage = NULL;
if(!hogeButtonImage){
hogeButtonImage = LoadImage("hogeButtonImage.png");
}

↓これではうまくいきませんでした。

#define DEF_IMG(name) static ImageStruct *name = NULL; if(!name){ name = LoadImage("name.png"); };

DEF_IMAGE(hogeButtonImage)
hogeButtonImage->hoge();
0807デフォルトの名無しさん2012/05/12(土) 00:34:31.07
そんなことにマクロ使うな
0808デフォルトの名無しさん2012/05/12(土) 00:34:36.64
#define文のスペース大杉
DEF_IMGなのにDEF_IMAGEとか。。
0809デフォルトの名無しさん2012/05/12(土) 00:34:55.90
ImageStructをラップするクラスを作ればいい
static ImageStruct hogeButtonImage("hogeButtonImage.png");
0810デフォルトの名無しさん2012/05/12(土) 12:46:05.55
クラスのメンバ変数にRECT構造体もたせて、コンストラクタの初期化子リストを使って
0で初期化したいのですが、pointer(NULL)はできてもrect{0}はできないようですね。
素直にコンストラクタ内で、rect.top=0;・・・などと書かないといけないのでしょうか?
0811デフォルトの名無しさん2012/05/12(土) 12:58:45.67
11ならできる
08128102012/05/12(土) 13:34:00.22
11じゃなくても動くコードにしたいですね・・・。
RECTを拡張して
struct RECT_EX:public RECT{
RECT_EX(){ top = 0: ....};
};
のようなコンストラクタ付きにした場合、
キャストしてWindowsAPIのGetWindowRect()に渡すのは危険でしょうか?
RECTの配列を渡すなら絶対危険だと思うのですが、1つだけならよい??
0813デフォルトの名無しさん2012/05/12(土) 13:48:27.83
やってることは0クリアとほぼ同じなんだから構造体コピすればいい
struct X{
X():a(a0){}
RECT a;
static RECT a0; };
static RECT X::a0={0};
0814デフォルトの名無しさん2012/05/12(土) 18:54:09.56
>>810
メンバ初期化子リストにrect()で0初期化できる

struct RECT
{
int x, y, w, h;
};

struct hoge
{
RECT rect;
hoge() : rect() {}
};
0815デフォルトの名無しさん2012/05/12(土) 21:53:49.35
try catchされない例外がthrowされた際に、
terminate()呼ぶ前に情報出力したいのですが、できますか?
0816デフォルトの名無しさん2012/05/12(土) 22:38:17.45
SetUnhandledExceptionHandler() かな
自分では使ったことない、全部デバッガに押し付けてる
0817デフォルトの名無しさん2012/05/12(土) 23:43:25.28
typedef void (*terminate_handler)();

のterminate_handlerと同じシグネチャの関数を作って

terminate_handler set_terminate(terminate_handler f) throw(); // 98
terminate_handler set_terminate(terminate_handler f) noexcept; // 11

で差し替えだな
set_terminateの返却値(前のハンドラ)を保存しといて新しいハンドラの最後で前のハンドラを呼び出すのが定番かな
08188152012/05/13(日) 02:00:53.36
レスありがとうございます。

>>816
構造化例外(win専用?)と標準例外があるんですね。

>>817
visual c++ で以下の関数で渡したコールバックが呼ばれないっす。
std::set_unexpected()
std::set_terminate()
0819デフォルトの名無しさん2012/05/13(日) 05:58:30.02
SEHなら、DIV0なりSFなりもつかまる C++例外だとわかれば、最外側に(ry
0820デフォルトの名無しさん2012/05/13(日) 10:26:16.99
>>818
> visual c++ で以下の関数で渡したコールバックが呼ばれないっす。
> std::set_unexpected()
> std::set_terminate()
vcでは必要なヘッダが標準と違うのとデバッガ有効だと機能しないぞ
ttp://msdn.microsoft.com/en-us/library/t6fk7h29.aspx
0821 ◆qr00w3BQO6 2012/05/14(月) 12:36:17.99
char test[20]="0123456789ABCDEF";
int data1,data2,data3;
このような変数から

data1==012
data2==3456789
data3==ABC

というように一部抽出して変数に格納したいのですがどうしたらいいでしょうか?
testの値は固定長ですが中身はrandomです.
0822片山博文MZボット ◆0lBZNi.Q7evd 2012/05/14(月) 12:44:59.26
>>821 memcpyを使え。
0823デフォルトの名無しさん2012/05/14(月) 13:29:05.93
/* >>821 */
#define DATA_SIZE 20
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
  char data1[ DATA_SIZE + 1 ], data2[ DATA_SIZE + 1 ], data3[ DATA_SIZE + 1 ];
  char test[] = "0123456789ABCDEF";
  int split1 = 3;
  int split2 = 10;
  int body_size;

  strncpy(data1, &test[0], split1);
  data1[split1] = '\0';
  body_size = split2 - split1;
  
  strncpy(data2, &test[split1], body_size);
  data2[body_size] = '\0';

  strcpy(data3, &test[split2]);

  printf("%s\n%s\n%s\n", data1, data2, data3);
  return 0;
}
0824デフォルトの名無しさん2012/05/14(月) 13:44:54.54
>>823
dataはintだぞw
0825デフォルトの名無しさん2012/05/14(月) 15:36:23.56
16進数なのか?
0826 ◆qr00w3BQO6 2012/05/14(月) 18:18:58.55
16進数です
0827デフォルトの名無しさん2012/05/14(月) 18:22:19.14
char test[20]="0123456789ABCDEF";
int data1,data2,data3;
scanf(test, "%3x%7x%3x", & data1, & data2, & data3);
0828デフォルトの名無しさん2012/05/14(月) 18:29:17.62
sssssssscanf
0829 ◆qr00w3BQO6 2012/05/14(月) 21:45:27.50
>>827
コピペして実行しましたが,ビルドは出来てsscanf()で止まってしまいます.
理由わかりますか? 構文的にはあってるみたいなんですが,,,
=は全角から半角に修正しました.
0830 ◆qr00w3BQO6 2012/05/14(月) 21:49:04.98
あ,sssssssssssscanfの意味が分かりましたw
0831デフォルトの名無しさん2012/05/14(月) 21:58:12.68
てかsprintfでおk
0832デフォルトの名無しさん2012/05/14(月) 22:02:34.64
忘れてくれ
0833デフォルトの名無しさん2012/05/15(火) 10:51:07.98
メソッド内で次のようなコードを呼んだ場合、
loadMyString()はhogeの初期化のときだけ呼ばれるのでしょうか?
それともこの行を含んだメソッドが呼ばれるたびに呼び出す(=メモリリークする)のでしょうか?

static MyString* hoge = ReadFileBuffer("hoge.txt");


0834デフォルトの名無しさん2012/05/15(火) 11:13:28.78
そのloadMyString()とやらは一体全体どこにあるのかね。
0835デフォルトの名無しさん2012/05/15(火) 11:24:59.16
ReadFileBufferは一度だけ呼ばれる
0836デフォルトの名無しさん2012/05/15(火) 12:11:11.91
別解: 論より証拠、みてみればいいじゃないか。っていう発想とゆとりをもとう。
マシンに近い言語だからこそ、挙動は実際にいくらでも確認できる

ReadFileBuffer() にデバッガをかけるもよし、
hoge がころころかわらないのを確認するもよし。

そうやって、体がCを覚えていく。
0837デフォルトの名無しさん2012/05/15(火) 15:23:30.03
開発環境:Microsoft Visual C++ 2010 Express (SP1)
実行環境:Microsoft Windows XP Home Edition (SP3)
プロジェクトの種類:Win32 コンソール アプリケーション

・質問
C言語で
wchar_t awcStr[] = L"ABCあいう\u2665\n";
というUnicode文字列をコンソール出力し、ファイルにもリダイレクトできるように
するにはどうすればいいでしょうか?

ttp://www32.atwiki.jp/sampleisbest/pages/44.html
自分なりに試しましたが煮詰まってしまいました
宜しくお願いします
0838デフォルトの名無しさん2012/05/15(火) 15:39:31.34
標準出力とファイルの両方に出力するだけだろ
0839デフォルトの名無しさん2012/05/15(火) 15:53:54.07
char型配列に格納された16進数文字列をそのまま数値に直し配列に格納するにはどうしたら良いですか?
文字列 488→int 0x488
0840デフォルトの名無しさん2012/05/15(火) 16:00:07.02
1文字ずつ処理すれば?
0841デフォルトの名無しさん2012/05/15(火) 16:00:22.62
strtol
0842デフォルトの名無しさん2012/05/15(火) 16:12:53.21
>>837
#include <io.h>
#include <fcntl.h>
略
_setmode(_fileno(stdout), _O_WTEXT);
wprintf(awcStr);
0843デフォルトの名無しさん2012/05/15(火) 16:28:47.40
>>842
圧倒的感謝・・・!
以下のソースにてコンソール出力、ファイルへのリダイレクトが正常に行われることを確認致しました

#include <fcntl.h>
#include <io.h>
#include <stdio.h>
void main()
{
wchar_t awcStr[] = L"ABCあいう\u2665\n";

_setmode(_fileno(stdout), _O_WTEXT);
wprintf(L"%s", awcStr);
}
0844デフォルトの名無しさん2012/05/15(火) 16:50:11.36
・補足
リダイレクトしたファイルを調べてみたらBOMなしのUTF-16LEでしたので一応注意
0845デフォルトの名無しさん2012/05/15(火) 17:02:41.65
UTF-16LEはwindowsの内部コード
0846デフォルトの名無しさん2012/05/15(火) 17:30:22.14
UTF-8の場合
_setmode(_fileno(stdout), _O_U8TEXT);
0847デフォルトの名無しさん2012/05/15(火) 19:10:03.40
>>842
//char buffに16進数のデータが格納されている

FILE *file
file open("buffer_export.dat","wb");
fwrite(&buffer,256,1,file);
fclose(file);

char &endp
n=strtol(buffer,&endp,16)
printf("n: %x\n",n);
printf("&endp: %d\n",endp);



//実行結果
n: 0
endp: 31f998

string.exeというバイナリエディタでbuffer_export.datを参照すると
FF EE AE 55 56 00 C3 00 00 FF 53 00 D7 00 00 FF
4D 00 D7 00 00 FF 57 00 D7 00 00 FF 50 00 C3 00....
一致しないのはなんででしょう?
string.exeはこちらが意図しているデータなので(データのヘッダーがかけているが)
そちらが間違っているということはないはずなんですが,ASCIIが悪さしているんですか?
0848デフォルトの名無しさん2012/05/15(火) 19:16:12.89
>>847
ソースを全部まるごと晴れ
問題はあんたが隠してるところにある
0849デフォルトの名無しさん2012/05/15(火) 19:25:20.52
>>839
>>847
質問の意図が分かりまえん

「char型配列に格納された16進数文字列をそのまま数値に直す」
は分かるけど、その後の「配列に格納する」は元のchar型配列なんだろうか?
0850デフォルトの名無しさん2012/05/15(火) 19:36:07.88
なんで
>printf("&endp: %d\n",endp);
で出力が
>endp: 31f998
になるのか誰か教えてくれ
0851デフォルトの名無しさん2012/05/15(火) 19:42:29.77
>>848
書き込め切れなかったので斧にあげました.

http://www1.axfc.net/uploader/Sc/so/345966.zip
pass 847

お願いします.
0852デフォルトの名無しさん2012/05/15(火) 19:46:33.65
めんどくさいやつだなぁ。ideoneかcodepadに貼れよ。
0853デフォルトの名無しさん2012/05/15(火) 19:47:52.71
>>849
char型配列に格納された16進数文字列から一部抜き出し,その値を計算することが目的です.
そのためにint等の配列に格納したいです.

>>850
すいません%dです 打ち間違えていました.
0854デフォルトの名無しさん2012/05/15(火) 19:51:56.99
>>852
こんな便利なサイトがあるんですね.
windows SDKがないので走らないですが...
http://codepad.org/s9STeC0Q
0855デフォルトの名無しさん2012/05/15(火) 20:05:36.32
Z80のアセンブラをちょっと勉強した程度のレベルなのですが、
自分で書いたC++コードのアセンブル結果を読んで自分で最適化できるようになりたいです。
(具体的には、キャストで何をしてるか、継承した時の関数テーブルがどうなってるか、
関数・メソッド呼び出しのコールスタックがどうなってるかなど)
分かりやすいサイトや、便利なツールなどあれば教えてください。
0856デフォルトの名無しさん2012/05/15(火) 20:10:55.13
#include <stdio.h>
#include <stdlib.h>
int main(void) {
  char *p;
  char c[] = "488h";
  int i;

  i = (int)strtol(c, &p, 16);
  printf("%x\n%s\n", i, p);
  return 0;
}
0857デフォルトの名無しさん2012/05/15(火) 20:13:42.43
エッ?(°∀°;)
C++コンパイラが吐いたx86とかx64のアセンブリを手で最適化?
アラインメントとかずれると速度が落ちるし(他のCPUではバスエラーを吐くのが多いからまだましだけど)
大きなソースで特にC++の演算子のオーバーロードを使って抽象化されてしまった機械語や
継承時のメモリ配置を手でいじるのか?

Inside the C++ Object Modelのような本はあるけど、読んでみればわかるけど8bitのZ80と
32/64bitのCPUじゃ桁が違うぞ
早晩発狂するかもな
0858デフォルトの名無しさん2012/05/15(火) 20:15:19.91
やめとけ
C++のコードを最適化すれ
0859デフォルトの名無しさん2012/05/15(火) 20:16:32.61
>>851
酷いソースだな
ソケット通信使ってるって最初に言えよ
UDP使うなよ 訳も分からずに使ってるんだろうけど
クライアントのソースどこよ
クライアントがおかしなデータ送ってるから分割できないんだろ
通信はTCPを使ったものに書き直せ
0860デフォルトの名無しさん2012/05/15(火) 20:20:46.86
C++の最適コードは、アセンブラの最適コードと大差なし。
念入りにC++コードを最適する。


C++ - Wikipedia
C++は、汎用プログラミング言語の一つである。
高度な機能を使用してもプログラムの実行性能が低下しすぎないように、言語仕様・ライブラリに様々な工夫が施されている。



0861デフォルトの名無しさん2012/05/15(火) 20:33:24.34

http://www.isus.jp/article/introduction-to-x64-assembly/

Microsoft Visual Studio C/C++ は、x64 バージョンではインライン ・アセンブリーがサポートされません。
個別のアセンブリー・ファイルと外部アセンブラーを使用するか、または組込み関数を使用しなければなりません。

組込み関数を使用する理由:
x64 でインライン ・アセンブリーがサポートされていない
使いやすさ: 手動でレジスターの割り当てを行う代わりに、変数名を使用できる
アセンブリーよりもクロスプラットフォーム: コンパイラーの開発元は各種アーキテクチャーに組込み関数を移植することができる
組込み関数のほうがオプティマイザーが効率良く動作する
0862デフォルトの名無しさん2012/05/15(火) 20:35:52.64
米国務省「韓国に戦術核必要なし」 下院可決受け

アメリカの下院軍事委員会が先週、北朝鮮の脅威に備えるため、韓国などを
念頭に戦術核兵器を配備すべきとした法案を可決しましたが、国務省は「必要ない」と明確に否定しました。
ヌーランド報道官:「我々は核のない朝鮮半島を支持していて、その方針を変えない。
戦術核兵器を韓国に置く必要はないし、配備する計画も意図もない」
ヌーランド報道官は、オバマ政権が一貫して目指す核のない朝鮮半島の方針に変わりはないと強調しました。
TV朝日 (05/15 12:35)
http://www.tv-asahi.co.jp/ann/news/web/html/220515020.html

日米同盟強化へ 米は9条改憲歓迎 「反対まったくない」

憲法第9条に基づき、日本は集団的自衛権を行使できないとの解釈が
日米同盟強化への大きな障害になるとする認識はいま米側で広範に強まり、
米国では、現在党派を問わず反対はなく、むしろ暗に歓迎するという姿勢が大勢となった。
92年にはヘリテージ財団が「米国は非公式に日本に改憲を促すべきだ」とする政策提言を発表した。
先代ブッシュ大統領も公式会見で、日本が改憲を求めるならば問題はないと言明した。
民主党リベラル派のトム・ラントス下院外交委員長は「日本が安全保障でも大国にふさわしい役割を
果たすために憲法を改正しようとすることを強く支持する」と述べた。

東京都の石原慎太郎知事が16日にワシントンでの討論会で憲法破棄を提唱したとき、
米側の討論者のリチャード・ローレス元国防副次官は「日本の憲法は確かに米軍占領時代の遺物であり、
日本はそれを変える権利も自由も有している」と述べ、日本の憲法改正にいまの米側には抵抗がないことを明示した。
sankei.jp.msn.com/politics/news/120425/plc12042507090004-n1.htm

米国から提唱する「日本の核武装」
日本が唯一の核兵器被爆国として過去、自国の核武装に強く抵抗する理由は明白だったが、常軌を逸した隣国が
核兵器保有を公式宣言するに至った今、再考が必要になった
sankei.jp.msn.com/politics/news/111009/plc11100920310007-n3.htm
0863デフォルトの名無しさん2012/05/15(火) 20:46:18.13
>>854
ttp://codepad.org/j75dwTJT
質問の意図をできるだけ解釈し、ソースの要点を抜き出してみた
0864デフォルトの名無しさん2012/05/15(火) 20:53:19.73
>>863
蔵から送信されたデータが既におかしいから
0865デフォルトの名無しさん2012/05/15(火) 21:10:39.80
>>855
C++のコードを最適化する為にアセンブリ出力を読むのはお勧め。
但し、他でも言われているけどz80の知識だけではなんともならないと思う。
取り敢えず、アセンブリ出力を眺めてみたら?
0866デフォルトの名無しさん2012/05/15(火) 21:25:45.73
>>859 >>864
説明不足ですいません.
リアルタイム性を重視する計測機器の情報なのでUDPが使われています.これは仕様なのでTCPに変えられません.
クライアント側は計測結果をリトルエンディアンで特定のバイトに入れて送信しているので,
そのデータを抜き出してchar型から計算可能な(三角関数などを使います)int型に変換したいのです.
0867デフォルトの名無しさん2012/05/15(火) 21:29:38.21
Z80と全然違うから勉強し直しと言っていい
0868デフォルトの名無しさん2012/05/15(火) 22:26:48.29
C言語について質問です。
リストってポインタが使えないと作れないデータ構造ですか?
08698552012/05/15(火) 22:32:06.47
誤解させてしまったようですいません。
アセンブラを自分で修正するのではなくて、
「C++コードを書く→アセンブラを見てみる→
C++コードを修正してみる→アセンブラがどう変わったか見てみる」
というようなことをやりたいのです。
(頭では仮想関数テーブルやswitch文の最適化などイメージできてるつもりだけど、
実際には見ていないのに分かったつもりになってる。)

Z80ではSSEも出ないですから現状はぜんぜん別世界ですよね・・・。
今回のやりたいことにマッチする、参考になるサイトがあれば教えてください!
0870デフォルトの名無しさん2012/05/15(火) 22:45:25.51
>>868
だね

>>869
IDEを使うといいよ
0871デフォルトの名無しさん2012/05/15(火) 22:48:18.50
>>869
>865
0872デフォルトの名無しさん2012/05/15(火) 23:07:45.65
>>868
一応「値」と「次要素の添字」の組を一要素とした配列を使えば
擬似的なモノは出来なくもないが…それは擬似リストとでも呼ぶべきかもな
0873デフォルトの名無しさん2012/05/15(火) 23:15:04.78
>>869
逆汗使う(有償・無償のものがある)
デバッガ使う(有償・無償のものがあるが、ntsdで十分)
コンパイラにアセンブラのリスト出力をさせられるので、それを使う

3番目は一番近いようで難しい
ディレクティブがごちゃごちゃ入るので、ちょっと覗くにはしんどい


ptr/offset, mov/lea にきおつけろ
0874デフォルトの名無しさん2012/05/15(火) 23:24:03.71
>>872
データ構造としては普通にリスト構造といっていいんじゃないか
0875デフォルトの名無しさん2012/05/15(火) 23:30:22.89
http://codepad.org/H070XnDA
だれかこのコードを簡略化というか最適化してください(´・ω・`)
一部分抜き出しただけで意味わからないだろうけど
if文が勿体無い(´・ω・`)
0876デフォルトの名無しさん2012/05/15(火) 23:38:41.83
オプティマイザに任せとけ
0877デフォルトの名無しさん2012/05/15(火) 23:40:03.44
double atn = atan2(-(double)(Y1-Y2),(double)(X1-X2));
double hoge = fabs((double)Angle - atn);
if( hoge >= PI/2) hoge = PI*2 - hoge;
0878デフォルトの名無しさん2012/05/15(火) 23:41:42.86
double hoge = fabs((double)Angle - atan2(-(double)(Y1-Y2),(double)(X1-X2)));
if(hoge >= PI/2){
hoge = PI*2 - hoge;
}
0879デフォルトの名無しさん2012/05/16(水) 00:26:05.59
>>878
thx
0880デフォルトの名無しさん2012/05/16(水) 09:04:49.71
主婦の7割「韓流が嫌い」 韓流ブームは日韓メディアが作り上げた虚像だったのか - ガジェット通信
http://getnews.jp/archives/212560

共立総合研究所が3月6日に発表した「韓流消費に関するアンケート」結果がインターネット上で関心を集めている。
調査によれば、日本の主婦の7割が「韓流好きではない」と回答しており、日韓両国のネット上では
「韓流ブームはメディアのステマ」などメディアを批判する声が上がった。

■日韓ネットユーザーは自国メディアを批判
日本のインターネット上ではアンケート結果を受けて、韓流ブームをあおったメディアを批判するコメントが殺到した。
「ステマ大失敗。またテレビのウソが明らかにw」
「世界中で大人気だったんじゃないのか?www」
「大金つぎ込んでステマ仕掛けたけども失敗した典型例」などと批判し、中には
「むしろ悪印象を根付かせる最悪の結果になったかなと」とメディアの韓流ごり押しが返って韓国の印象を悪くしたとの意見もあった。

また、調査結果は韓国メディア「マネートゥデイ」も報道。日本の韓流ブームが韓国で報じられているほど浸透していないことが分かると、
韓国のネットユーザーたちは自国メディアを批判するコメントを書き込んだ。
「正直、韓国の報道機関はみんな仮想ばかりだからね」
「歌を歌えばすぐにチャート1位。こんなのバブルでしょ。反省してほしい」
「韓流?そんなのは韓国メディアが作り上げたもの。日本のメディアは
取り上げないけど、今韓国では日流ブームが到来しているんだよ。街を見てくださいよ」
「私はヨーロッパ在住だけどこっちは日流。韓流より多い」
「正直言って韓流はメディアのやらせ」
「私も韓流なんて興味ない。みんな顔を作り直しているし」
「K-POPは一回性の音楽です」
「韓流の世界の認知度は、ポケットモンスターの足下にも及ばない」
「バブルってのは事実だと思う。韓国がIT以外に自慢できるものって何がある?」
「韓流ブームが過ぎ去る前に独島をなんとかしたい」

メディアのごり押しで嫌気がさしている人も多い。韓流ブームというバブルが弾けた後に、
日本国民全体に反韓感情だけが残るという事態にならなければいいが…。
0881デフォルトの名無しさん2012/05/16(水) 12:02:22.75
韓流ブームの真骨頂は…ってム板じゃねえかよ、なんでここにまで
0882デフォルトの名無しさん2012/05/16(水) 23:25:04.69
// optimize.hpp
#pragma once

template<class Solution>
class OptBench{
public:
double (*costFunction)(Solution sol);
Solution bestSol;
virtual void update() = 0;
};

template<class Solution>
class OptDescent : public OptBench<Solution>{
public:
void update();
};

// optimize.cpp
#include "optimize.hpp"

template<class Solution>
void OptDescent<Solution>::update(){
int a = 0;
cout << a;
}

という感じでファイル分けて書いてるんですが、リンカでupdate()が未解決と怒られます
メンバ関数がテンプレート関数の時は仮想関数作れないのは調べてわかったのですが、
テンプレートクラスの普通のメンバ関数を仮想関数にしてはいけないのでしょうか。
0883デフォルトの名無しさん2012/05/16(水) 23:45:28.37
export template に対応してるコンパイラがほとんどないから同じヘッダに全部
書いた方がいいんじゃないのか

他のファイルからupdate()を参照しようとするとリンカエラーになるんだろ?
0884デフォルトの名無しさん2012/05/17(木) 00:15:09.80
>>883
テンプレートって基本ファイル分割できないんですね…
参照しなくてもダメでした
cppファイルをincludeして無理やり解決しました
ありがとうございます
0885uy2012/05/17(木) 14:49:47.79
なぜ初心者はCとかC++から入って
そこで何年も止まるのだろう
0886デフォルトの名無しさん2012/05/17(木) 14:57:16.34
高級アセンブラだからさ
0887デフォルトの名無しさん2012/05/17(木) 16:07:09.98
>>885
仕事に使ってないから
趣味程度ではなかなか上達しないよ
でもあるレベルを超えると急に理解度が増すという事はある
0888デフォルトの名無しさん2012/05/17(木) 17:17:06.90
>>887
いってること本質的におんなじだとおもうけど、
「C/C++でもやるか」ではじめる奴って、実際に何か実装する動機が弱いんだと思う
趣味ででも何か作ろうってなると、伸びる
0889デフォルトの名無しさん2012/05/17(木) 18:14:35.44
フリーウェア位作れば仕事をしているのと大して変わらないからな
0890デフォルトの名無しさん2012/05/24(木) 10:10:45.20
libjpegを使ったソフトを作ろうと思うんですけど、
ライセンスの表記ってどこで出せばいいんでしょうか?

ソースの中?
ヘルプの中?
0891デフォルトの名無しさん2012/05/24(木) 12:17:35.23
書ける場所に全部書いておけ
0892デフォルトの名無しさん2012/05/24(木) 13:09:07.24
>>890
そのソフトウェアの配布ページにでも書いておけばいいよ
0893デフォルトの名無しさん2012/05/24(木) 16:47:28.12
とりあえず: 弁護士集団を擁している、あのMSの製品を真似ておけば。 > 表記
0894デフォルトの名無しさん2012/05/26(土) 22:23:34.13
本格的に勉強するときって参考書買ったほうがいいかな?
ちなみにQTやろうと思ってるんだけど
08958942012/05/26(土) 22:24:37.49
すまん。ここと間違えた
http://toro.2ch.net/test/read.cgi/tech/1337067149/
0896デフォルトの名無しさん2012/05/27(日) 06:27:36.05
if ((lockdes = open(_PATH_LOCKFILE, O_WRONLY | O_CREAT, 0600)) < 0)
という処理なのですが、
これって、ロックファイル(_PATH_LOCKFILE)がすでに有った場合は、
openに失敗しますか?
0897デフォルトの名無しさん2012/05/27(日) 06:31:29.88
しません
0898デフォルトの名無しさん2012/05/27(日) 06:33:12.68
します
0899デフォルトの名無しさん2012/05/27(日) 06:56:42.25
どっちやねん!
0900デフォルトの名無しさん2012/05/27(日) 07:24:50.95
しますん
0901デフォルトの名無しさん2012/05/27(日) 08:22:07.95
試せば分かるだろ馬鹿

クイズでもやってるのかよ
0902デフォルトの名無しさん2012/05/27(日) 09:09:38.64
試してみました。
そすると、lockファイルがあっても無くても、open出来てしまいました。
あれ?「ロックファイルの意味ないじゃん」と思っていたら、
fcntl(lockdes, F_SETLKW, &lock);
と言う処理が書いてありました。
ロックファイルは有っても無くてもopen出来るけれど、
実際の排他処理はfcntlでやってたんですね。
勉強になりました。
0903デフォルトの名無しさん2012/05/27(日) 09:14:01.58
openとfcntlの間に他の処理が割り込むから排他になってない
0904デフォルトの名無しさん2012/05/27(日) 10:13:46.82
すいません。
ちゃんとシグナル処理は書いてありました...
0905デフォルトの名無しさん2012/06/01(金) 05:35:16.38
webkitのビルドがなかなか終わらないんですがどうしたらいいですか?
0906デフォルトの名無しさん2012/06/01(金) 06:11:17.03
辞める
0907デフォルトの名無しさん2012/06/01(金) 08:52:27.44
だいぶ前にビルドしたときは、まずIDLファイルが大量で案外時間かかって、
本体はプリコンパイルヘッダ使わない(強制してみたが、使えなかった)から、すごく遅い
そして最後に、リリースビルドはリンクが/GLだから、延々時間かかる

いいビルドマシン買え、って声が、そのとき俺の中で聞こえた気がした

ま、今もそんなにかわらんだろ。よく知らんけど。
0908デフォルトの名無しさん2012/06/04(月) 21:09:11.61
すごく初歩的な質問かもしれませんが、

#include<stdio.h>
int g_i=1;
int g_j=1;
void test(int,int,int,int);

int main(){
int x = 3;
int y = 3;

test (g_i,g_j,x,y);

printf("%d %d",g_i,g_j);
};

void test(int g_i,int g_j,int x,int y){
g_i = x;
g_j = y;
};

これがなぜ「3,3」と表示されず、「1,1」と表示されるのかがわかりません。
test関数でx,yの値(3)を受け取ってグローバル変数のg_i,g_jに代入してるから値が変わるんじゃないかと
思ってしまうんですが、そうならないのは何故ですか?
0909デフォルトの名無しさん2012/06/04(月) 21:13:11.42
test(変数){} がローカル変数だから。
0910デフォルトの名無しさん2012/06/04(月) 21:31:09.06

testの(int g_i,int 〜)の所でg_i,g_jがローカル変数として宣言されてしまって
その関数の中ではグローバル変数として扱えなくなっているということですか?
0911デフォルトの名無しさん2012/06/04(月) 22:34:37.54
>>910
グローバル変数として扱えなくなっているというより
そもそもグローバル変数でない別のものにアクセスしちゃう形

変数名を書かれたとき、コンパイラはスコープの近いものから順に探すので
近いところにg_iやg_j(これらはグローバルのg_iやg_jとは別の変数)を見付けた時点で「ああこれね」となり
グローバル変数があるかどうかなんて別に気にも留めないままコンパイルすることになる
そんなワケでローカルのg_iやg_jに値を代入し、それは使われないまま捨てられる
…てな感じで考えたほうがいいかな
0912デフォルトの名無しさん2012/06/04(月) 22:41:14.97
>>911
ほう。
わかりやすく説明してくださってありがとうございました
たすかりました!
0913デフォルトの名無しさん2012/06/04(月) 23:07:41.30
同名のローカル変数を作るとグローバル関数を隠蔽してしまう
0914デフォルトの名無しさん2012/06/05(火) 08:40:51.91
>>908
こうすれば、実行結果は3,3になる。
#include<stdio.h>
int g_i=1;
int g_j=1;
void test(int*,int*,int,int);

int main()
{
int x = 3;
int y = 3;

test (&g_i,&g_j,x,y);

printf("%d %d",g_i,g_j);
};

void test(int* g_i,int* g_j,int x,int y)
{
*g_i = x;
*g_j = y;
};
0915デフォルトの名無しさん2012/06/07(木) 23:38:56.68

class Charactor{
public:
void update();
private:
Posx,Posy;
};

Charactor* my = new Charactor();
Charactor* enemy = new Charactor();

とするとmyのupdate()の中でenemyのPosx,Posyの情報を取得する方法はありますか?
0916デフォルトの名無しさん2012/06/08(金) 00:04:53.05
>>915
void update(Charactor * other)にしてmy->update(enemy)とかすればother->Posxで取得できる
0917デフォルトの名無しさん2012/06/08(金) 01:01:01.06
>>916
返答ありがとうございます!
ということはさらにCharactor* bossをnewしたりすると
引数はもっと増えていってしまうのですね
0918デフォルトの名無しさん2012/06/08(金) 01:27:51.48
>>917
> ということはさらにCharactor* bossをnewしたりすると
> 引数はもっと増えていってしまうのですね

一つずつ渡していくならそうなる
void update(vector<Charactor*> const & v)とかにしてまとめて渡すようにすれば直接の引数は一つだけのままにできる
0919デフォルトの名無しさん2012/06/08(金) 01:41:57.19
>>918
まとめる方法もあったんですね
vectorも最近学んでいたのでこの機会に使いこなせるようがんばってみます
返答ありがとうございました!
0920デフォルトの名無しさん2012/06/08(金) 23:30:17.68
コンストラクタの初期化子リストをコンストラクタの引数で初期化するとき、
初期化対象と引数が同じ名前のときはどう書くのが良いのですか
例:
class Foo {
 const int bar;
public:
 Foo(int bar) : bar(bar) { } // <--これは規格上合法?
};

現状このような時だけメンバの方にm_をつけてm_barとするとか、
あるいは引数の方をbar_とかして区別できるようにしていますがいい加減嫌気がさしてきたOTL
0921デフォルトの名無しさん2012/06/09(土) 00:09:31.91
引数なんて「a b c」にしとけ
ちなみにメンバは「x y z」な
0922デフォルトの名無しさん2012/06/09(土) 02:17:49.68
>>920
規格ではエラーにはならないから合法
…ってそういうことを聞きたいんじゃないよなw

コンストラクタの中で宣言した引数やローカル変数の名前は
その外のスコープの名前(クラスのメンバ変数の名前も含む)を隠蔽する
ttp://codepad.org/92RJuiOS
引数の名前で隠蔽した場合は注意が必要 ↑の例だとh.yの値はh.xの3倍ではないぞ
0923デフォルトの名無しさん2012/06/10(日) 08:28:14.42
C99から配列のサイズを実行時に指定できるようになりましたが、この配列に対してsizeofが可能なのはどういった仕組みなのでしょうか。
size_t foo(int size)
{
  int array[size];
  return sizeof(array);
}
単にコンパイル時にsize*sizeof(int)相当のコードに置きかえているのでしょうか。
0924デフォルトの名無しさん2012/06/10(日) 08:52:19.59
>>923
C99の規格書に当たったわけではないからその点割り引いて聞いて欲しいが、
C99の可変長配列は関数の引数としても渡せるから、
配列自体にサイズ情報が保持されている必要があり、
コンパイル時にsize*sizeof(int)相当のコードに置きかえるという>923方式一辺倒では破綻する
(※ >923のような他の関数に渡さない特定の場合に最適化によってそのようなコードが生成されることは考えられる)

可変長配列をスタック上にしか取れない(自動変数としてのみ可能)という制限から察するに、
alloca()と同じような内部メカニズムなのではないか
0925デフォルトの名無しさん2012/06/10(日) 09:50:27.40
>>924
あーそうらしいね
規格票を "variable length array" で検索してみると分かるけど、多次元配列を
動的に確保出来るのと、sizeof演算子が適用出来るという点は素晴らしいと思う

多次元配列ならalloca()の構文糖と解釈する事も出来るが、sizeofが使えると
なると俄然意味合いが違ってくる

ただし他の型とsizeof演算子の内部メカニズムが異なるらしく、他の固定型はコンパイル
時にサイズが決定しているが、variable length arrayは実行時にサイズを評価している
コンパウンドリテラルの中にvariable length arrayがあるような場合も同じ
0926デフォルトの名無しさん2012/06/10(日) 19:46:27.65
自分で渡したサイズを配列から求めなおす必要があるのってどんな場合?
0927デフォルトの名無しさん2012/06/10(日) 20:23:56.19
>>926
呼び出す度に異なるサイズの可変長配列を確保するような場合じゃね
0928デフォルトの名無しさん2012/06/11(月) 02:51:37.41
Microsoft Visual C++ 2008 です

#pragma once
#include <exception>
class MyException : public std::exception {
public:
EMemberMaxException(const char *msg) {
std::exception(msg); // <- この行で「error C2082: 仮パラメータ 'msg' が再定義されました。」というエラーが出ます
}
};

何故再定義とみなされてしまうのでしょうか?
私のstd::exceptionの継承の仕方がマズいのでしょうか?
0929デフォルトの名無しさん2012/06/11(月) 10:50:58.52
>>928
そのソースどおりならEMemberMaxExceptionの返却値型がなくメンバ関数の定義になってないから
0930デフォルトの名無しさん2012/06/11(月) 11:11:46.78
>>929
ごめんなさいよく見たらコンストラクタ名直すの忘れてました…
ええと、本来ならクラス名と同じ名前なんです…
0931デフォルトの名無しさん2012/06/11(月) 21:39:04.71
>>928,930
exceptionにはconst char *をとるコンストラクタはない
そのため
exception(msg);
は一時変数の生成でなく
exception msg;
という変数宣言と解釈されるから

参考 ttp://codepad.org/aDURxBwF 変数の宣言時に変数名は括弧で囲える
0932デフォルトの名無しさん2012/06/11(月) 22:43:22.25
もしかして:
EMemberMaxException(const char *msg)
:std::exception(msg){
}
0933デフォルトの名無しさん2012/06/11(月) 23:13:30.44
>>931
コンストラクタは関係ない
宣言と解釈できるものは宣言と解釈するルールのせい

まあ>>928がやりたかったのは>>932だろうな
09349332012/06/11(月) 23:37:34.32
それとやりたかったことが>>932でも
> exceptionにはconst char *をとるコンストラクタはない
は正しいのでコンパイルエラーになるのは変わらない
0935デフォルトの名無しさん2012/06/12(火) 08:09:16.96
>>931-934
ありがとうございます
C++の場合、コンストラクタの継承ってこう書くんですね…
変数宣言が括弧で括れることも知らなかったです、併せて覚えておきます
0936デフォルトの名無しさん2012/06/12(火) 16:32:28.78
内部クラスの前方宣言って無理なん?

class A;
class A::B; <- コンパイルエラー
0937デフォルトの名無しさん2012/06/12(火) 23:57:10.01
無理
0938デフォルトの名無しさん2012/06/12(火) 23:58:20.27
extern "C" { void foo( ); }
のとき、C++風にfoo( void )なのと、C風にfoo( ... )なののどっちに解釈されるの?
0939デフォルトの名無しさん2012/06/13(水) 08:42:54.16
>>937
無理かあ
んじゃ名前空間でも作ってそこに両方置いてみる、ありがと
0940デフォルトの名無しさん2012/06/13(水) 12:46:35.22
template<class _A> class B: _A{};
class A{};
template class B<A>;

extern "C"は構文をC++からCにするという意味ではない。
0941デフォルトの名無しさん2012/06/17(日) 10:34:55.60
キャメルケースによる命名は特にJava系言語で隆盛だと思うのですが
大文字のみの略語が含まれる場合どうするべきなのですか
 例: EUCEncoding v.s. EucEncoding

また、どっちにせよ大文字のみの略語が来ると
アッパーキャメルケース (UCC)(またはパスカルキャメルケース)をクラス名に使い、
ローワーキャメルケース (LCC)をメンバやインスタンスの名前に使うという使い分けをしたい場合
区別がつかなくなると思うのですがソフトウェア工学的にはどうするのが正しいのですか
09429412012/06/17(日) 10:38:20.37
↓こっちと間違えて誤爆いたしましたすみませんorz
[スレ立てるまでもない質問はここで 119匹目]
http://toro.2ch.net/test/read.cgi/tech/1337067149/l50

でもま、実際私自身のターゲット言語は本当はC/C++なのでこちらにて回答いただこうかと
0943デフォルトの名無しさん2012/06/17(日) 11:11:00.95
どう書いてもソフトウェア工学的な正しさなんかない
プロジェクト内での命名ルールが統一されてればどうでもいい
0944デフォルトの名無しさん2012/06/17(日) 11:33:14.98
そういう時は悪しきハンガリアン記法を借りてくればいいじゃないか。
クラス名にはCEUCEncoding、そのオブジェクトはcEUCEncoding、データメンバならm_EUCEncodeType。
関数は動詞から始まるから問題の埒外。

っていうか>>943で正解。
0945デフォルトの名無しさん2012/06/17(日) 16:05:13.06
質問です。ガチ初心者で変なこと聞いてるかもしれませんが

C++であるシステムを作ろうとした時、
メインのソースファイル(main.cpp)があって、ヘッダーファイル(main.h)に
インクルードや定数の定義、宣言などをすると思うんですが

例えば、このヘッダーファイル(main.h)がインクルードするヘッダーファイル郡に
全ての処理が記述されていて(そのヘッダーファイル郡がさらに新たなインクルードをするなどで)、
メインのソースファイル(main.c)では、極端に言えば「関数を1つ呼び出すだけでOK」
という状態が、オブジェクト指向というものの理想なのでしょうか?

まだまだ初心者でいろいろと練習していきたいのですが
そういったところを意識して丁寧にやっていくか、ただがむしゃらに数をこなしていこうかどうかという方針が定まらないです
0946デフォルトの名無しさん2012/06/17(日) 17:07:13.86
めくるめくC++の世界へのエントリポイントとしてのmain() なら、
main() 自体は数行ってことはあるよ

OOPのひとつの書き方として、実装のあらかたがクラス定義におさまる書き方はある。
0947デフォルトの名無しさん2012/06/17(日) 17:18:59.18
>>945
知らんが、オブジェクト指向は関数型言語的性格(オブジェクトを生成するだけで変えない)と、
命令言語型的性格(生成したオブジェクトの状態を変える(破壊的代入))のミックスしたもので
数学的モデルが定まっていない
ゆえに、系の原始オブジェクトが何であるべきか、について統一した見解など今のところ無い

【派閥1】一般的に言って、モデルとビューとコントロールは分けたほうがあとあと使い勝手が良いし、
問題の適度な一般化をも意味するから分けて考えることでかえって設計しやすい
ということはこれら3オブジェクトの生成ぐらいはmain()にあっても良いんジャマイカ、
(これらの生成を1つのクラス内で行うか、main()の中で行うかは本質的な違いとは言えない

【派閥2】普通UIはプログラム1本につき1つだから、プログラムを特徴付けるオブジェクトとして
main()ではビューに相当するオブジェクトを1個生成し、ビューのコンストラクタかLoad()イベントで
モデルとコントロールを生成さす

【派閥3】まずコントロールを(以下略
0948デフォルトの名無しさん2012/06/17(日) 21:50:37.76
MFCなんかmyAppっていうグローバルなクラスオブジェクトの中にありとあらゆるものがぶっこまれてるからなぁ。
main関数なんてほとんどからっぷでもいいレベル。
0949デフォルトの名無しさん2012/06/17(日) 22:37:56.71
>>946-948
ありがとうございます。
これだけ自由度の高い分野だと「コレ」と決めてしまうことによる弊害の方が多いのでしょうね
コーディング規約などにおいてもガッチリ決まってるモノもないようなので
今はとにかくクラスの概念に慣れることに専念しようと思います
0950デフォルトの名無しさん2012/06/18(月) 00:20:21.67
俺もMFCを例示しようと思ってた

クラスの設計はいろいろで、性格というか考え方が現れる

ソースを見せるのが恥ずかしい原因の一つでもある
0951デフォルトの名無しさん2012/06/18(月) 23:38:09.83
>>950
ソースに愚痴を書く奴がいたっけw
0952デフォルトの名無しさん2012/06/18(月) 23:59:32.46
前任者のボヤキがw
0953デフォルトの名無しさん2012/06/20(水) 06:41:49.04
ワザワザアプリケーション固有の動作を書いたクラス作って
mainをほぼ空にするのは個人的にナンセンスだと思うな。
アプリケーション固有の動作なんて、main関数内にできるだけ
納めておいたほうがいいし、クラスを作るより先に、オブジェクトを
組み合わせて新しい動作を定義するよう心がけたほうがいいと思う。
トップレベルのウィンドウなんかは他で共有しないんだから
main(WinMain)の中で構築したって困らないし。
0954uy2012/06/20(水) 06:54:43.40
俺はゴミカスだがエリートゴミカスだ
お前らのような下級ゴミカスとは格が違う
0955デフォルトの名無しさん2012/06/20(水) 08:08:28.99
>>953
CUIとしても動作させる可能性があったり、他のプログラムからの起動もあったりするから、
main()の中が見通しがいい方が融通は利くよ。
まぁ、そういうプログラミングをしないのならナンセンスに思えるのは判るけどね。
0956デフォルトの名無しさん2012/06/20(水) 22:03:23.02
>>953
沢山の関数に分離したり、クラスにしたりとやり方は様々だけど
main()に限らず一関数に長々突っ込むのだけは流石にマズいと思うよ
0957デフォルトの名無しさん2012/06/27(水) 17:31:42.44
CとC++両方できる人に聞きたいんだけど、
プログラムの開発でC++でなく純粋なCで書くメリットってある?
0958デフォルトの名無しさん2012/06/27(水) 17:43:39.02
純粋なCってのがあいまいすぎる
0959デフォルトの名無しさん2012/06/27(水) 18:06:03.51
あいまい・・か?
ではC++固有の機能を使わない、C言語の規格に則ったプログラム開発と訂正しておく。

最近C++始めたんだが、その高機能な言語仕様の前にCの存在価値がほぼ無いように感じる。
組み込み系とかは別だが。
0960デフォルトの名無しさん2012/06/27(水) 18:12:21.99
書く人によるけどCの方が高速なものが作れたりバイナリが小さくなったりというメリットはある
0961デフォルトの名無しさん2012/06/27(水) 18:17:34.56
DLL作るときもインターフェース部分はCにしておくことが多い
0962デフォルトの名無しさん2012/06/27(水) 18:53:50.58
C++の方ができる実行ファイルが大きい環境がある
例えばmainがほぼ空でも
Cだと24KB
C++だと500KB
0963デフォルトの名無しさん2012/06/27(水) 21:49:52.62
restrictとかC側にしかない機能も一応挙げてやれよ
0964デフォルトの名無しさん2012/06/28(木) 20:34:06.37
c99の機能を積極的に使いたいときもCだな。
まぁ、大抵C++で書いているね。
0965デフォルトの名無しさん2012/06/28(木) 21:15:28.88
Cで書きゃ移植性は抜群。Javaより動作環境は多い。
なので、新しいプラットフォームによく移る場合は、
Cで資産蓄えることになるわな。
携帯電話のドライバーまわりやら、HPC、ネットワーク機器関連とかは
Cが多いだろ。突っ込まれる前に書くがHPCに関しては、C++に比べればという話で
FORTRANの方が圧倒的に需要がある。
0966デフォルトの名無しさん 2012/07/08(日) 07:31:30.81
for(i=0;i<2;i++){
for(j=0;j<4;j++){
if((i==j) || (i==3-j) ){
v=a[i][j];
a[i][j]=a[3-i][3-j];
a[3-i][3-j]=v;
}
}
}
4次魔方陣
label1に表示するにはどうしたら良い?
0967デフォルトの名無しさん2012/07/08(日) 08:25:34.17
label1.SetWindowText() に文字列化して突っ込め、とかか?
そうだとすると、\tが効果を発揮するように組めよ

てかもっとlabel1のほうのヒントよこせ
0968デフォルトの名無しさん2012/07/08(日) 11:42:53.95
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char i;
char j;
String^ w="";

for(i=0;i<4;i++){
for(j=0;j<4;j++){
a[i][j]=4*i+j+1;
if(a[i][j]<10)w=w+L"0"+(a[i][j]).ToString()+L" ";
if(a[i][j]>=10)w=w+(a[i][j]).ToString()+L" ";
}
w=w+L"\n";
}
label1->Text=w;
}


こんな感じに表示したい
0969デフォルトの名無しさん2012/07/08(日) 12:08:49.58
すればいい
0970デフォルトの名無しさん2012/07/08(日) 14:39:52.44
FortranのプログラムをCに組み込む方法教えてください
DLLを作るんですか?
0971デフォルトの名無しさん2012/07/08(日) 16:32:45.88
作ればいい
0972デフォルトの名無しさん2012/07/08(日) 23:33:12.26
>>967
なぜCでもないのにlabel.SetText();
じゃないのかイラッとするな

>>970
gcc Cのソース.c Fortranのソース.f

この時、Fortran側に外部関数の呼び出し書いとけば行ける
0973デフォルトの名無しさん2012/07/09(月) 16:42:42.10
label.SetText(); はjava?

Visual C++なんだけど
0974デフォルトの名無しさん2012/07/09(月) 19:09:10.03
label1という名前にセンスがない
0975デフォルトの名無しさん2012/07/09(月) 20:08:17.49
visual studio 2010 のデフォルトそのままなんだがw
0976デフォルトの名無しさん2012/07/09(月) 20:09:35.53
じゃlabel2にしとけ
0977デフォルトの名無しさん2012/07/09(月) 21:33:30.89
>>973
VIsual C++じゃなくて、MFCの問題だろ
ATLやら他のライブラリ使ってみろよ
0978デフォルトの名無しさん2012/07/09(月) 22:36:43.58
>>968だと
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

と表示される

>>966で↓の値が出てるから空いたマスに上の値を入れて表示したいんだが。
16 13
11 10
07 06
04 01


16 02 03 13
05 11 10 08
09 07 06 12
04 14 15 01


C++はじめて1週間くらいだから他のライブラリとか分からん
0979デフォルトの名無しさん2012/07/09(月) 22:51:17.99
C++/CLIじゃねーか
0980デフォルトの名無しさん2012/07/09(月) 23:02:08.57
>>979
おー、そうだw
0981デフォルトの名無しさん2012/07/10(火) 00:46:07.61
>>978
なんで>968じゃいかんの?
C++はじめて一週間かどうかよりも、日本語をもう少し何とかしてくれないと。
少なくとも、他人に判るように説明する訓練くらいはしておいてくれ。
0982デフォルトの名無しさん2012/07/10(火) 06:45:02.61
>>981

>>968は4次魔方陣 じゃないだろ

>>978の下の図が4次魔方陣だし

>>966で4次魔方陣に必要な対角線上の入れ替えを行ってる

お前日本語分からんのか?
4次魔方陣も知らんのだろ
0983デフォルトの名無しさん2012/07/10(火) 07:35:30.98
説明不足
コメントくらい書けゴミカス
0984デフォルトの名無しさん2012/07/10(火) 08:21:29.87
>>982
いやだから、魔方陣の表示は>968でいいんじゃねぇかと。
応用できないの? 馬鹿なの?
0985デフォルトの名無しさん2012/07/10(火) 09:12:06.12
表示したい
↓
こんな風に表示したい
↓
そのやり方でいいじゃん
↓
それは4次魔方陣じゃねーよ

ライブラリが…ってレベルじゃないよね
0986デフォルトの名無しさん2012/07/10(火) 12:54:42.24
4次魔方陣なら入れ替える必要がない

ゴミカスはさっさと消えろ
0987デフォルトの名無しさん2012/07/10(火) 15:25:43.46
C++の推薦図書でよく見る「詳説C++ 第2版」。
凄い面倒な言い回しだったり、
重要な部分をさらっと書いて終わってたり・・・。
内容は濃いのかもしれんが著者の文が突っ走りだったり図が大変理解しがたく、
100ページを完全理解するのに数日もかかっていて苦労しています・・・。

そこで本を変えようと思っての質問です。
内容が濃く、文章や図が理解し易いC++入門書でおすすめがあったら教えてください。
望洋?ロベール?あたりですかね?
今までCで書いて公開してたソフトをC++でフルスクラッチするのが目的です。

古い1998しか知らないので「2003」をまず勉強したい。
2003の理由は使ってる環境がVS2005だからです。
0988デフォルトの名無しさん2012/07/10(火) 17:31:39.01
あきれるバカだな

本当に4次魔方陣知らんのだな

どうせ答えられんのだから黙っとけやカス

まだパン君の方が日本語理解出来るな死ねカスごみ

0989デフォルトの名無しさん2012/07/10(火) 17:32:55.15
お前みたいなのがいるから過疎スレになるんだよ

ヲタニートクソwwwwwwwwww
0990デフォルトの名無しさん2012/07/10(火) 17:35:37.83
                                            (  (
                 ,,.r'' ゛~~` ''ッ,,                    )   )
               、 ゛  ,,,,,,,,,,,,,,,,,,,,, ヾ.                ,.、   / /
                ミ   ミ゛,へ.__, ,_ノヽ i.                .| |l   l ,´
              ミ    ミ, ( ・) {・フ 〉 ミ.          _-、i::| |ニニii '
          、,,,,ツi:     ミ,`~´ ヽ~〈  .ミ        /,‐ヽヽ`、||
        、シ``   i:      ,ゞ  'n.inヽ. .ミ          ( .〉〉/
       シ  //      ミ`    l.l ヽ"、         /  ノ
      ミ/ シ           彡 ,=こ二=.{ ミ,,      ,r'´ ,,、'゛
      ミi. /  /       ' ! w、`~^' vwv '、   ミ      〃 .ミ
     .ミ /     i:  /      `^^     \ ."   〃  ミ
    .ミ.:/ / / i:      v    !  ,,   \ 、 〃  ミ   知ったかも疲れるんだぜwww
    :i;     .i:   w      !!   ミ!:   ミ \\( ⌒ヽ      
    :i;  /   i:      !!       .ミ キ    , ⌒`、_  )  )
    :il     .i:    !    w!    ミ .:i.   (_ (  _,ノ  ) ,
   :il   !  i:           ! ,〃゛  キ    ゞ、 __,  ノ ,
   .:il !   /~~````` " '''' = ‐- 、ミ  _,,,,_ミ,  il `  ー ´
   :il   ´ ―  ̄ - ,,. -‐‐-、、 ヽ. ヾ、  ゞ、 `  〃
   ゝ、wx.mn.!!++ナ'~      ヾ~ヽ、 ヽ、 ,, ~^^}´
      彡   〃  〃     }} /〉.〉〉〉i''"   〃
       彡、     {{     〃,__!////l |    〃
         X,,    》.   ≪.__`‐'.' '´,Uwwvw'、...,,,___
          ^^^^ !wニこ)こ)二)`) (_,,,..- 、...二⊃_).).
0991デフォルトの名無しさん2012/07/10(火) 17:40:04.63
C++98とC++03ってほとんど変わらなくね
0992デフォルトの名無しさん2012/07/10(火) 17:40:52.97
過疎らないように上げておこう
0993デフォルトの名無しさん2012/07/10(火) 17:54:12.57
更に上げとこう
0994デフォルトの名無しさん2012/07/10(火) 17:55:44.67
    ∧_∧  / ̄ ̄ ̄ ̄
  ∧( ´∀`)< あげ
 ( ⊂    ⊃ \____
 ( つ ノ ノ
 |(__)_)
 (__)_)
0995デフォルトの名無しさん2012/07/10(火) 18:08:25.20
漏れら極悪非道のageブラザーズ!
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   ∧_∧    age
 (・∀・∩)(∩・∀・)    age
 (つ  丿 (   ⊂) age
  ( ヽノ   ヽ/  )   age
  し(_)   (_)J
0996デフォルトの名無しさん2012/07/10(火) 18:09:00.95
僕たち純真無垢なsageブラザーズ!
人目につかないようにsageてあげるよ!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧_∧     ∧_∧    sage
   (・∀・ )    ( ・∀・)    sage
   /    \    /   \ sage
  ⊂(  ヽノ つ ⊂ヽ/  ) つ  sage
    し(_)     (_)J
0997デフォルトの名無しさん2012/07/10(火) 18:13:34.89
>>986 魔方陣分かってねーな
グルグルじゃねーぞ(笑)
0998デフォルトの名無しさん2012/07/10(火) 18:36:34.59
うめようず
0999デフォルトの名無しさん2012/07/10(火) 18:37:46.56
↓↓↓こいつ童貞↓↓↓
1000デフォルトの名無しさん2012/07/10(火) 18:38:41.26
1000なら一生童貞
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。