スレを勃てるまでもないC/C++の質問はここで 20
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/09/15(木) 00:17:43.25過去ログ
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.490003デフォルトの名無しさん
2011/09/15(木) 17:05:51.530004デフォルトの名無しさん
2011/09/16(金) 00:22:38.870005デフォルトの名無しさん
2011/09/16(金) 05:25:30.110006デフォルトの名無しさん
2011/09/16(金) 07:26:08.22喰える、喰えない、割と好き
0007デフォルトの名無しさん
2011/09/17(土) 11:39:07.680008デフォルトの名無しさん
2011/09/21(水) 08:06:04.88ttp://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.37SOCKET _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それなら原因は想定できた。
0011デフォルトの名無しさん
2011/09/21(水) 08:15:04.460013デフォルトの名無しさん
2011/09/21(水) 09:34:10.54それが>10の言いたいことかどうかは知らんが、(char *) & msgはsend()に渡すべき場所を指しているかデバッガでよく見てみたら?
つーか、Cスタイルキャストは使うなや。
0014デフォルトの名無しさん
2011/09/21(水) 14:24:19.16渡してまともに動作するものなのか?
TextMessageの場合は、たまたまクラスの銭湯に_test[16]があれば動作するかも知れないが…
00158
2011/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 );
としたらうまくいきました。
情報不足の質問をしてすみませんでした。アドバイスくださった方、ありがとうございました。
00168
2011/09/21(水) 14:35:44.970017デフォルトの名無しさん
2011/09/22(木) 00:48:42.180018デフォルトの名無しさん
2011/09/22(木) 11:31:13.74template< 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.200020デフォルトの名無しさん
2011/09/22(木) 14:36:30.97template <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.950022デフォルトの名無しさん
2011/09/22(木) 14:43:18.70>>20と同じエラーが出ます
0023デフォルトの名無しさん
2011/09/22(木) 14:55:45.200024デフォルトの名無しさん
2011/09/22(木) 15:00:15.12ありがとうございます
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>();
}
0026デフォルトの名無しさん
2011/09/22(木) 19:13:14.040027デフォルトの名無しさん
2011/09/22(木) 19:32:01.78自分でパーサー書けば出来る
0028デフォルトの名無しさん
2011/09/22(木) 19:59:16.78Lua使えば1分でそういうコードが書けるよ
0029デフォルトの名無しさん
2011/09/23(金) 01:57:41.810030デフォルトの名無しさん
2011/09/26(月) 13:40:15.69一文字なのでぐぐれなくて困っています。
0031デフォルトの名無しさん
2011/09/26(月) 13:44:45.38ワイド文字
0032デフォルトの名無しさん
2011/09/26(月) 18:51:14.140033デフォルトの名無しさん
2011/09/26(月) 19:17:29.98〜
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.36X a()は返却値X型で引数をとらない関数aの宣言で解放もなにもないし
変数の構築と破棄の順序関係はRAIIなんかとは直接関係ない変数に関する普通の話だしでつっこみどころしかない。
最低限の知識が正しく身についてない人にはそれより先は教えようがないぞ。
0035デフォルトの名無しさん
2011/09/26(月) 20:13:36.69規定されてるよ
>>34
struct A{};
A a();
0036デフォルトの名無しさん
2011/09/26(月) 21:54:42.25生兵法君が鼻息荒げて訳判らん(キリッしちゃったんだろうな
0037デフォルトの名無しさん
2011/09/27(火) 21:03:18.94PHPやJavaScriptは習得しているのですが、ちょっとC系が必要になりそうなのです
その際、C -> C++と学習したほうがやはりいいのでしょうか?
CはC++に吸収済みとか言う人もいるようですが
オブジェクト指向に関しましてはまぁ少々は慣れていると思います
やはりC++をいきなりというのはつまずく点が多いのでしょうか?
また、CとC++はオブジェクト指向以外にも違いはあるのでしょうか?
Webで調べたのですがいまいち分かりませんでした
0038デフォルトの名無しさん
2011/09/27(火) 21:15:01.97必要な言語を学習したんでいい。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仕事でも趣味でも受験でも、目的があるならそれに沿った言語を選択して学習すればいい。
学習そのものが目的なら自分で調べて悩んで下さい。学習になります。
0041デフォルトの名無しさん
2011/09/27(火) 22:22:48.68CとC++の肝はメモリー管理。
どちらからやっても同程度に壁になる
0042デフォルトの名無しさん
2011/09/27(火) 23:08:30.45日頃Cをバリバリ使ってると、C++の仕事は苦痛。
その程度には違うので、C系なんてごまかしてないで、
プロジェクトに必要な方をやるべし。両方必要なら迷わずC++。
0043デフォルトの名無しさん
2011/09/28(水) 10:13:54.660044デフォルトの名無しさん
2011/09/28(水) 13:08:19.61手続き型言語でコールバックは悪ってのは何故なんでしょうか。
0045デフォルトの名無しさん
2011/09/28(水) 13:10:23.060046デフォルトの名無しさん
2011/09/28(水) 13:44:47.44コールバックが入るとA(ハンドラ登録)-コールバック-B-C-D-Eだったり
A(ハンドラ登録)-B-C-D-E-コールバックだったりと処理の順序関係が安定しなくなる、
あるいは順序を安定させようとするとマルチプロセス化や待機状態を作るなどの
純粋な手続き型と比べると余計なコストがかかるなどで相性が悪いから。
0048デフォルトの名無しさん
2011/09/28(水) 19:37:53.90デバッグ時に発生しなかったバグケースがリリース時に出たら困りますよね
0049デフォルトの名無しさん
2011/09/28(水) 19:49:24.57assert使った事ないの?
0050デフォルトの名無しさん
2011/09/28(水) 19:51:34.90リリース時に例外を投げるassertもどきなら使ってます
ボトルネックでは仕方ないからassertですが…
0051デフォルトの名無しさん
2011/09/28(水) 19:53:58.32ディスパッチャーの中で発生させるアラートや事後アラートがバレると
IQの低さを悟られてしまうから止めといたほうがイイとおもうよ
0052デフォルトの名無しさん
2011/09/28(水) 19:58:18.010053デフォルトの名無しさん
2011/09/29(木) 00:38:50.35func(hoge(1, 2));
というふうな書き方ができないから
{ hoge h(1, 2); func(h); }
と書いてるんだけど、ダサすぎて困る
0054デフォルトの名無しさん
2011/09/29(木) 00:46:48.17C++ならコンストラクタを書く
CならC99のコンパウンドリテラルを使う
C89はどうしようもない
0055デフォルトの名無しさん
2011/10/01(土) 17:55:42.79な所が
printf("hoge", "hoge", x);
こうなるケースがあっても問題ない?
0056デフォルトの名無しさん
2011/10/01(土) 18:03:28.620057デフォルトの名無しさん
2011/10/01(土) 18:36:14.120058デフォルトの名無しさん
2011/10/01(土) 19:08:08.85例えば func,100 とだけ書かれたファイルを読み込んで,func(100)という風に呼び出したいのです
0059デフォルトの名無しさん
2011/10/01(土) 19:19:48.85{
func(num);
}
0060デフォルトの名無しさん
2011/10/01(土) 19:38:38.90void 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.380062デフォルトの名無しさん
2011/10/01(土) 19:46:40.080063デフォルトの名無しさん
2011/10/01(土) 20:00:11.71ありがとうございます
たぶん,これでもやろうとしてることは出来ないことはないんですが
全部の関数でそれをするのはちょっと辛いなあと思ってたんです
言葉足らずですいません
>>60
C++はまだ勉強中なのでよくわからないのですが,おそらくイメージしてたのはこれです
mapとか言うのを調べればよさそうな感じですね
勉強になりました
お二方,ありがとうございました
0064デフォルトの名無しさん
2011/10/03(月) 22:58:54.79どうすればいいですかね・・・
#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.670066デフォルトの名無しさん
2011/10/03(月) 23:05:19.910067デフォルトの名無しさん
2011/10/03(月) 23:11:29.79%cにしたら出力が「???」になりました
0068デフォルトの名無しさん
2011/10/03(月) 23:14:04.750069デフォルトの名無しさん
2011/10/03(月) 23:15:41.950070デフォルトの名無しさん
2011/10/03(月) 23:16:03.02申し訳ない
>>68が正解だな
0071デフォルトの名無しさん
2011/10/03(月) 23:17:43.86できました!ありがとうございます
&はscanfと混同してました・・・初歩的なミスでしたね^^;
0072デフォルトの名無しさん
2011/10/04(火) 18:16:34.85http://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.57foo::int_vector::at へのメンバ関数ポインタを取得するために、
返却値型 int const & で引数は一つで型は foo::int_vector::size_type で const 修飾されてる foo::int_vector のメンバ関数の
メンバ関数ポインタ型へ明示的なキャストをしてる。
0074デフォルトの名無しさん
2011/10/04(火) 20:22:34.44ありがとうございます。
関数キャストは
(返却値型 (ポインタ型)(引数リスト) )
の形式で行うということですね。
0075デフォルトの名無しさん
2011/10/04(火) 21:16:27.46・メンバ関数ポインタ
・オーバーロードされてる(メンバ)関数への(メンバ)関数ポインタの取得
についてわかってるならそれでいいよ
0076デフォルトの名無しさん
2011/10/06(木) 01:12:52.40案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どちらも単なる関数オブジェクトだから大差ないんじゃね?
強いて言えば案1の方が3.0を内部状態として持つのでそれだけ引数の
受け渡しが減る
0078デフォルトの名無しさん
2011/10/06(木) 01:48:04.60int 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.230080デフォルトの名無しさん
2011/10/06(木) 02:19:35.410081デフォルトの名無しさん
2011/10/06(木) 02:23:32.070082デフォルトの名無しさん
2011/10/06(木) 09:00:52.21transform(vec.begin(), vec.end(), vec.begin(), bind2nd(ptr_fun<double, double, double>(pow), 3.0));
0083デフォルトの名無しさん
2011/10/08(土) 21:10:35.55struct 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.930085デフォルトの名無しさん
2011/10/09(日) 01:07:01.670086デフォルトの名無しさん
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.83ifs.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 <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.33C++でWinXPでネットワーク接続を表示したときに表示される「LANおよび高速インターネット」を
表示するexeを作成したいですが、ネットワーク名なんかはレジストリから取得できました。
しかし、切断したネットワーク名まで表示される状態で上記の内容とはずれてしまっています。
レジストリに保管されているネットワークから現在接続されているネットワークだけ表示したいんですけど、
何をフラグとしてしているのかがわかりません。
どなたかご教授お願いします。
0090デフォルトの名無しさん
2011/10/10(月) 01:12:36.92devcon status =net
でdisabled/runningの判別がつくけど他にいい方法があるかもしれん
0091デフォルトの名無しさん
2011/10/10(月) 01:19:16.35ありがとう、seekgを使うのがポイントなのね
0092デフォルトの名無しさん
2011/10/10(月) 03:43:03.150093デフォルトの名無しさん
2011/10/10(月) 09:19:56.590094デフォルトの名無しさん
2011/10/10(月) 09:38:55.180095デフォルトの名無しさん
2011/10/10(月) 10:44:11.90ofstream::write
0096デフォルトの名無しさん
2011/10/10(月) 11:18:44.56ありがとう。
devconは知らなかった。試してみる。
0097デフォルトの名無しさん
2011/10/10(月) 23:31:47.94P308の演算子オーバーロードの流れがよくわかりません。
> delete[] m_array;
> m_array = array;
deleteしたにも関わらず直後にdeleteしたものを使っていて混乱しています。
0098デフォルトの名無しさん
2011/10/10(月) 23:35:20.400099デフォルトの名無しさん
2011/10/10(月) 23:36:11.26deleteしたのは、m_arrayのポインタが指す領域。
m_arrayはまだ残っている。
そこに、arrayのエリアのポインタを再設定しただけ。
0100デフォルトの名無しさん
2011/10/10(月) 23:37:57.79○そこに、arrayの中にあるポインタを再設定しただけ。
0101デフォルトの名無しさん
2011/10/10(月) 23:40:21.83array→[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よくわかりました。ありがとうございます!
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その代入演算子は、
Hoge a;
Hoge b;
...
a = &b;
としたとき、&a を返す演算子だから呼ばれてない。
0105デフォルトの名無しさん
2011/10/11(火) 07:36:40.08これをやろうとすると、ポインタ型のグローバルな代入演算子をオーバーロードすることになるけれど、
C++では、その操作は許されていない。つまり、できない。
どうしてもというなら、copy()メソッドのようなものを作るしかない。
0106デフォルトの名無しさん
2011/10/11(火) 10:46:38.24template<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.260109デフォルトの名無しさん
2011/10/11(火) 16:22:01.56Setting Default Parameters...
Parsing Configfile encoder.cfgCannot open configuration file encoder.cfg.
続行するには何かキーを押してください . . .
ってでて動きません。
環境変数とかはいじってないはずなんですけど・・・
解決方法がわかる人がいれば教えてください!
0110デフォルトの名無しさん
2011/10/12(水) 01:16:57.92{
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.790112デフォルトの名無しさん
2011/10/12(水) 01:55:27.49CUSTOMVERTEX2* 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.46sizeofの結果が変わってくる
sizeof(vertices[0])*20にすればおk
0115デフォルトの名無しさん
2011/10/12(水) 10:28:00.33ありがとうございます。
できました。
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メモリー確保ができなかった場合rtn=0になる。その確認
> return 1; ←【Q2.return 0;ではないのは何故ですか?】
プログラムが終了したとこのコードを1(エラー)として0(正常)特別している。
0118デフォルトの名無しさん
2011/10/13(木) 00:31:51.37○と区別している。
0119デフォルトの名無しさん
2011/10/13(木) 01:07:29.45A2.普通main()は成功時に0、失敗時に非0を返す。そのためのマクロEXIT_SUCCESSと
EXIT_FAILUREも定義されている
0120デフォルトの名無しさん
2011/10/13(木) 03:12:37.85ありがとうございます。理解できました。
論理演算子とNULL値をよく理解していませんでした。
0121デフォルトの名無しさん
2011/10/13(木) 07:06:25.03練習問題がついた良いサイトありませんか?
http://www.geocities.jp/ky_webid/ProgrammingPlacePlus/c/index.html
こんなサイトのC++版があれば理想的なんだけど
0122デフォルトの名無しさん
2011/10/13(木) 08:52:06.18C++はCと違ってそのボリュームは生半可じゃないぞ
独習C++でも買え
0123デフォルトの名無しさん
2011/10/13(木) 11:17:11.220124デフォルトの名無しさん
2011/10/13(木) 14:14:16.820125デフォルトの名無しさん
2011/10/13(木) 14:39:55.460126デフォルトの名無しさん
2011/10/13(木) 14:56:23.02基本情報を取りましょう
0127デフォルトの名無しさん
2011/10/14(金) 12:57:00.56C言語の課題なんだが 、五つの数字足したあとに平均だす方法がわからん。
教えてください
0128デフォルトの名無しさん
2011/10/14(金) 13:11:34.530129デフォルトの名無しさん
2011/10/14(金) 13:12:48.930130デフォルトの名無しさん
2011/10/14(金) 13:18:31.86すまない、補足なんだがC++だ
0131デフォルトの名無しさん
2011/10/14(金) 15:16:10.610132デフォルトの名無しさん
2011/10/14(金) 15:58:18.97あとはわかるな?
0133デフォルトの名無しさん
2011/10/14(金) 16:10:02.030134デフォルトの名無しさん
2011/10/14(金) 16:15:21.830135デフォルトの名無しさん
2011/10/14(金) 16:19:22.800136デフォルトの名無しさん
2011/10/14(金) 16:24:40.12俺がお年玉でVB4.0を買った頃じゃないか
結局ろくなもん作れなかったけど
0137片山博文MZ
2011/10/14(金) 17:10:05.900138デフォルトの名無しさん
2011/10/14(金) 19:05:53.66OK
ついでに言うと自分でnewをオーバーロードするときもサイズ0に対応できるように書かなければならない
0139デフォルトの名無しさん
2011/10/14(金) 21:12:05.51俺と同じ悩み持っててワロタ
#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.220141デフォルトの名無しさん
2011/10/14(金) 21:35:33.010142デフォルトの名無しさん
2011/10/15(土) 08:29:11.34C++らしさをどうしても出したいなら、cin と cout 使えば?
0143デフォルトの名無しさん
2011/10/15(土) 09:48:34.05その前にcstdioだろ
0144デフォルトの名無しさん
2011/10/15(土) 15:10:53.490145デフォルトの名無しさん
2011/10/15(土) 16:56:04.82n = sscanf(buf, "%d %d", &a, &b);
0146デフォルトの名無しさん
2011/10/16(日) 00:22:43.730147デフォルトの名無しさん
2011/10/16(日) 00:44:14.950148デフォルトの名無しさん
2011/10/16(日) 00:48:50.24お前の頭の中の四捨五入の手順を細かく分解してその一つ一つの段階をプログラムにするだけ
頭の中のもやもやした考えを分析・整理してプログラムで表現するのは
上手くプログラムを書くのに必須の能力だからそのつもりでやってみな
0149デフォルトの名無しさん
2011/10/16(日) 00:51:37.79boost::math::round<T>(X)
0150デフォルトの名無しさん
2011/10/16(日) 01:00:25.46#include <boost/math/special_functions.hpp>
0151デフォルトの名無しさん
2011/10/16(日) 13:49:05.020.5をたしてきりすてる
0152デフォルトの名無しさん
2011/10/17(月) 21:13:14.45哀しいけどソレが現実なのよね
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当たり前
C++なら自分でoperator<<を作るといい
0155デフォルトの名無しさん
2011/10/18(火) 08:03:56.29オーバーロードと再帰をうまく使えば簡単に保存できるよ
0156デフォルトの名無しさん
2011/10/18(火) 09:28:51.24まとめて保存すると、場合によってはアライメントの罠にはまって復帰できなくなる。
0157デフォルトの名無しさん
2011/10/18(火) 10:41:55.33boost.serialization使えばいいじゃん
0158デフォルトの名無しさん
2011/10/18(火) 10:44:41.950159デフォルトの名無しさん
2011/10/18(火) 12:56:42.270160デフォルトの名無しさん
2011/10/18(火) 13:05:27.320161デフォルトの名無しさん
2011/10/18(火) 13:26:56.08boostでいいじゃん厨がアホであることを示す典型的なレスだな
0162デフォルトの名無しさん
2011/10/18(火) 14:04:55.95プログラムの99%は車輪の再発明、おまえはプログラムできないなw
0163デフォルトの名無しさん
2011/10/18(火) 17:15:55.610164デフォルトの名無しさん
2011/10/18(火) 19:00:58.56確かにごにょごにょごにょ…特に実務に携わる機会の少ない研究者やアマチュアに多い傾向があるように思える。
0165デフォルトの名無しさん
2011/10/18(火) 19:51:46.04話はそれからだ
0166153
2011/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初心者でも分かり易く解説されているサイトがあれば教えて下さい。
もしなければ、お勧めの本を教えて下さい。
できれば少ない冊数で、安価な物でお願いします・・・。
0169デフォルトの名無しさん
2011/10/22(土) 16:01:41.320170デフォルトの名無しさん
2011/10/22(土) 16:07:07.000171デフォルトの名無しさん
2011/10/22(土) 16:32:41.440172デフォルトの名無しさん
2011/10/22(土) 16:39:59.81やさしい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来年からだったら、もうその手の本は読まない方が良い
(自分も似た様な境遇で挫折した過去が。。。)
ググりながらでも、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.41C++を学べばCもすらすら出来るようになるのでしょうか?
それとも、先にCを学んでからC++を勉強し始めた方が良いのでしょうか?
0178デフォルトの名無しさん
2011/10/28(金) 20:32:04.72Cは言語使用がシンプルだから、
C++やる前に、さらっとCやっておくのは個人的には良いことだと思う。
0179デフォルトの名無しさん
2011/10/28(金) 20:38:33.18C++でオブジェクト指向プログラミングのメリットを体験すべき
0180デフォルトの名無しさん
2011/10/28(金) 20:46:33.48>C言語から始めて構造化プログラミングの問題点を身を持って理解してから
横レスだけど、問題点ってなんだろ?
0181デフォルトの名無しさん
2011/10/29(土) 04:21:10.87CとC++は別の言語だから、Cで仕事をするならCを、C++で仕事をするならC++を学んで下さい。
移植のために互換性がありますが、同じ言語だと思ったら大間違いです。
0182デフォルトの名無しさん
2011/10/29(土) 09:00:31.10C言語はやっといた方がいいと思う。
で、C++でのC言語にないoperator等の利便性がわかると思う。
0183デフォルトの名無しさん
2011/10/29(土) 11:44:46.16ttp://mukago.game.coocan.jp/main/
0184デフォルトの名無しさん
2011/10/29(土) 12:07:06.70俺も横レス
構造化プログラミングは優れた思想だけど、
Cだとそれ以外の選択肢を取りにくい。
C++ならオブジェクト思考だったり、templateだったり、
関数型プログラミングだったり、複数の選択肢が出てくる。
・・・その代わり機能が多過ぎて覚えるのに時間がかかるけど
0185デフォルトの名無しさん
2011/10/29(土) 12:09:08.12Cはハードウェアを制御するプログラミング言語だからそのような機能を備えたハードウェアを開発して
そのハードウェアをC/C++から制御するという形でなら可能ではないでしょうか
0186デフォルトの名無しさん
2011/10/29(土) 12:32:03.11運が良ければ標準Cだけで可能
0187デフォルトの名無しさん
2011/10/29(土) 12:33:06.25覚えるのは難しくないが実際にモノを作るときにどの選択肢がいいのかを正しく選ぶのが難しい
0188デフォルトの名無しさん
2011/10/30(日) 00:07:22.66家の土台部分に船のような構造をつけて波に反応して
家から船に変わるとかそんな感じでしょうか?
いまいちイメージできません。
0189デフォルトの名無しさん
2011/10/30(日) 03:50:55.80スコア総あたり→ループ回数で割る
という方法よりも効率よく求められる方法ってなにかありますでしょうか?
0190デフォルトの名無しさん
2011/10/30(日) 04:58:24.79処理を書けるかを見られてるんだよね?どんなコードにするのが正解なの?
0191デフォルトの名無しさん
2011/10/30(日) 05:21:05.06ランダムに点を取得する(つまり最初の1フレームの1投目のスコア期待値が55/11となる)前提で
なげ続けた場合の最終的なトータルスコアの期待値を求めたいってこと?
静的な式になるから、式を作れば簡単に解けるだろうけど、
全部の場合を列挙するのがちょー面倒なんじゃ…特にストライクが癌だな。
0192デフォルトの名無しさん
2011/10/30(日) 08:35:04.93#include<stdio.h>
int main(vo
で30Byteになってしまった
いったいどうすればいいんですか?
0193デフォルトの名無しさん
2011/10/30(日) 09:18:37.59プログラミングの基本的なこと(順次実行、分岐、ループ)が理解出来て、それが応用できるかどうかでしょ
要するに「根本的にプログラミングに
向いてない人」をフィルタするための問題かと
0194デフォルトの名無しさん
2011/10/30(日) 10:17:30.88でも減点ないのか。でもこれじゃ出来ない人なんていなくねと思うけど
0195デフォルトの名無しさん
2011/10/30(日) 10:39:46.05信じられないかも知れないが
この程度でもまともにコードに出来ない人は本当に居るからなー
0196デフォルトの名無しさん
2011/10/30(日) 10:59:57.67分岐は、ストライク、クリア、クリア無しの3つだから、各パターンの期待値を再帰で求める。
0197デフォルトの名無しさん
2011/10/30(日) 12:01:58.57困るってものじゃないのか?
ループ文なんだっけみたいな。
0198デフォルトの名無しさん
2011/10/30(日) 12:15:07.78期待値って1つだろ。
0199デフォルトの名無しさん
2011/10/30(日) 12:30:13.55平均値とは多分、確率付き部分期待値の計の事のつもりだろうから、これで合ってる。
0200デフォルトの名無しさん
2011/10/30(日) 12:35:28.16いねーよwww
0201デフォルトの名無しさん
2011/10/30(日) 13:21:10.95俺も以前はおまえと同じ考えでした…
0202デフォルトの名無しさん
2011/10/30(日) 16:05:55.410203デフォルトの名無しさん
2011/10/30(日) 16:59:31.69エスパー?
平均値なんてどこに書かれてるんだ?
0204デフォルトの名無しさん
2011/10/30(日) 18:51:19.14それは外国の話だろ
少中高大とマジキチ排除フィルターがよく機能してる日本ではあり得ない
0205デフォルトの名無しさん
2011/10/30(日) 23:24:03.720206デフォルトの名無しさん
2011/10/31(月) 00:14:48.55でFizzBazz書いてみてっていう為の問題じゃないの
0207デフォルトの名無しさん
2011/10/31(月) 00:27:04.900208デフォルトの名無しさん
2011/11/02(水) 21:44:06.700209デフォルトの名無しさん
2011/11/02(水) 23:09:29.09コンパイラのバージョンは?
0210デフォルトの名無しさん
2011/11/03(木) 07:25:39.91回線の数
0211デフォルトの名無しさん
2011/11/03(木) 14:40:20.39延々とscanfを繰り返すプログラムを作りたいのですが
do{
scanf("%d",i);
}
while(i<1||9<i)
このようにすると、文字列が入力された時等にwhileを抜けてしまうので上手く動作しません。
想定しない文字列(全角文字や英字、記号)はどのように処理するのが一般的ですか?
while(!(0<i&&i<10)も検討してみたのですがこちらはどうでしょう?
0212デフォルトの名無しさん
2011/11/03(木) 14:47:37.16ここの下の方のようにすればいいとおもわれ
ttp://ja.wikipedia.org/wiki/Scanf
0213デフォルトの名無しさん
2011/11/03(木) 19:41:38.43ありがとうございます。
上手く処理できそうです!
wikipediaにヒントがあるとは…。
検索不足かつ初歩的な質問ですみませんでした。
0214デフォルトの名無しさん
2011/11/04(金) 02:57:21.58今は
src=strstr(src,タグ名)+strlen(タグ名);
'<'までコピー
ってしてるけど、汎用性がない
0215デフォルトの名無しさん
2011/11/04(金) 11:56:25.19規模が大きいならパーサライブラリを使うのが無難だけど、
そうでもないならstrstr()でもいいんでない?
どの辺が汎用性がないと思っているの?
0216デフォルトの名無しさん
2011/11/04(金) 23:49:27.03決まったタグしか検出できないとか、タグの書く順番をガチガチに決めておかないと
いけないとかそういう辺り。HTMLみたいな感じでタグの書く箇所によって、どこ
がどの属性を持つかとかまで指定出来るようにしたいんだけど、それをしようとすると
if文で羅列するばっかの馬鹿みたいなコードになっちゃう。
パーサライブラリで調べたらいっぱい出てくるのね。オープンソースの探してどうやってるの
か見てみることにする
0217デフォルトの名無しさん
2011/11/05(土) 03:22:25.00最大メモリ消費量ではなく、現在のメモリ消費量を随時知りたいです。
0218デフォルトの名無しさん
2011/11/05(土) 03:49:00.68ProcessExplorerでも使えばいいやん
0219デフォルトの名無しさん
2011/11/05(土) 03:53:28.86aを入力しても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.990221デフォルトの名無しさん
2011/11/05(土) 04:09:30.08/* 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;
}
}
}
0223デフォルトの名無しさん
2011/11/05(土) 07:36:28.71deque interator not dereferencableて出ます。
対処法を教えていただきたいです。
0224デフォルトの名無しさん
2011/11/05(土) 08:38:37.67アロケータ−作れば?
0225デフォルトの名無しさん
2011/11/05(土) 17:55:16.70コピペくらい手順をちゃんと覚えなさいよ。
んで、ここに貼らずに翻訳サイトに貼れば答えが出てくるよ。
0226デフォルトの名無しさん
2011/11/05(土) 17:56:00.64自分で書いた処理なら、自分で把握できているでしょ。それを書き出せばいいじゃん。
0227デフォルトの名無しさん
2011/11/05(土) 23:33:10.37他人が作ったプロセスのメモリ消費量を知りたいのか、自分のコードの中で、自分の消費した量を知りたいのかで違う。
また、自分の消費した量でも、スタックだとかstaticだとかnewやallocだとかのどの量を知りたいのかで違う。
さらに、スレッド別に知りたいかどうかでも違う。
0228デフォルトの名無しさん
2011/11/06(日) 06:19:15.51クラスに計算結果を入れておく変数を一時的に作りたいんだけど、どうすればできますか?
0229デフォルトの名無しさん
2011/11/06(日) 09:45:43.450230デフォルトの名無しさん
2011/11/06(日) 10:51:17.37便乗ですみません。継承・委譲はわかるのですが、包含はよくわかりません。java や c++ だとどんな感じのコードになるのでしょうか?
0231デフォルトの名無しさん
2011/11/06(日) 10:57:15.41std::map<Hoge const *, TempValueType>
0232デフォルトの名無しさん
2011/11/06(日) 12:29:13.37C++で包含といったらある型が他の型(のインスタンス)を内部にもつ(所有する)、くらいのおおまかな概念でしかないよ
struct X { // X型はint型とY型を包含する
int x;
Y y;
};
int x[10]; // intの配列型はint型を包含する (とは概念的にはありえるけど普通は言わない)
0233デフォルトの名無しさん
2011/11/06(日) 14:18:37.77自分で組んでるプログラムのヒープやスタック全てを合わせたメモリ消費量を知りたい。
そういう関数でもあるかと思ったけど無いのね
アロケーター調べてみたけど作るのも面倒そうだし、全部数えて書き出すのは規模的に
ありえないしで、もう諦めることにする。ありがとう
0234デフォルトの名無しさん
2011/11/07(月) 18:14:50.650235デフォルトの名無しさん
2011/11/07(月) 18:36:25.600236デフォルトの名無しさん
2011/11/07(月) 22:20:44.39例えば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使ったこと無いからわからんけどたぶんこう
0238デフォルトの名無しさん
2011/11/07(月) 23:49:54.14boost::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.970240デフォルトの名無しさん
2011/11/08(火) 00:19:13.460241デフォルトの名無しさん
2011/11/08(火) 04:17:41.94いやまったく。
boostは確かに便利な局面もあるが、そんな無理しなくてもと思うことの方が多い。
0242デフォルトの名無しさん
2011/11/08(火) 19:15:01.84void* pVoid = ...
ostringstream oss;
oss << pVoid;
こうするとoss.str()には、例えば「000012AB」という文字列が入るのですが、
16進数・0埋め・桁数など指定していなくても、環境問わずそれらが指定された形になる事は保障されているのでしょうか?
また、64bitOSでは16桁になるのでしょうか?
0243デフォルトの名無しさん
2011/11/08(火) 20:15:37.910244デフォルトの名無しさん
2011/11/08(火) 20:16:12.25「指定していないのに指定された形になることが保証されているのか」って、
自分でなにを言ってるのか良く考えてからどうぞ。
0245デフォルトの名無しさん
2011/11/12(土) 17:21:00.49バカにも分かるように教えて下さい
0246デフォルトの名無しさん
2011/11/12(土) 18:56:06.660247デフォルトの名無しさん
2011/11/12(土) 19:50:13.26既存のクラスの一部/全ての機能を利用する新しいクラスを作る手法の一つ
0248デフォルトの名無しさん
2011/11/12(土) 20:00:36.18わかりづらいです・・・
ドラゴンボールで例えてみてください・・・
0249デフォルトの名無しさん
2011/11/12(土) 20:09:31.37ゴクウを亀仙人のところで修行させてかめはめ波を習得すること。
0250デフォルトの名無しさん
2011/11/12(土) 20:36:50.37セルは孫悟空、ベジータ、ピッコロ、フリーザ達の強い細胞を継承して生まれた
0251デフォルトの名無しさん
2011/11/13(日) 01:40:39.84値を代入したソース上で開けばちゃんと値が入っているのですが、他のソースからだと見れないのですが、どうすればいいでしょうか・・・。
0252デフォルトの名無しさん
2011/11/13(日) 02:02:56.46問題のコードをcodepadかideoneに貼れ。
0253デフォルトの名無しさん
2011/11/13(日) 21:01:12.73テンプレートでの、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.380255デフォルトの名無しさん
2011/11/13(日) 21:35:13.87ありがとうございました。
0256デフォルトの名無しさん
2011/11/14(月) 10:20:27.56template <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.660258デフォルトの名無しさん
2011/11/14(月) 12:25:43.81それだと
Test<int> t(100);
t < 123; //できない
50 < t; //できない
t < Test<int>(200); //これならできる
とかで不便なときがあるぞ
0259デフォルトの名無しさん
2011/11/14(月) 13:01:25.88当たり前じゃん
operator<が定義されてないんだから
Testってクラスだよ?
俺は>>253を試して何とか動くようにしてみただけ
0260デフォルトの名無しさん
2011/11/14(月) 14:20:45.83>>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どうなってんのこれ?
変換演算子もないのにどうして動くの?
0262デフォルトの名無しさん
2011/11/21(月) 12:06:13.76実行ファイルが大きくなってなにか困ることがあるんですか?
0263デフォルトの名無しさん
2011/11/21(月) 12:58:34.870264デフォルトの名無しさん
2011/11/21(月) 13:19:24.280265デフォルトの名無しさん
2011/11/21(月) 14:09:10.890266デフォルトの名無しさん
2011/11/21(月) 14:29:32.76friendで演算子を定義すると、object.operator@(引数)という形では評価されないので
暗黙のコピーコンストラクタにより一時オブジェクトが生成される
もちろんクラス内部にdeep copyが必要な要素が混ざっていると危険なので
自前でコピーコンストラクタを定義する
0267デフォルトの名無しさん
2011/11/21(月) 15:19:31.90インライン展開されちゃうよ、な話ではなかろうか。
0268デフォルトの名無しさん
2011/11/21(月) 15:28:44.330269デフォルトの名無しさん
2011/11/26(土) 04:20:58.650270デフォルトの名無しさん
2011/11/26(土) 04:33:41.80メモリ使用量が増大するし、同一関数が別々と認識されCPUキャッシュの効果が薄れる。
0271デフォルトの名無しさん
2011/11/26(土) 05:18:44.06インライン展開した所で、たいして速くなりそうもない気がする。
アルゴリズムとか制御構造見直した方がよほど速くなる可能性があるだろ。たぶん。
0272デフォルトの名無しさん
2011/11/26(土) 08:40:21.30[256 * 256][256]のint配列の全要素をインクリメントしたら
inlineじゃないほうが倍ぐらい早かった
こういう小さい関数ってinlineの得意な分野だと思ってたけどそうでもなかったようだ
0273デフォルトの名無しさん
2011/11/26(土) 09:32:48.11最適化で消えてる可能性は?
0274デフォルトの名無しさん
2011/11/26(土) 09:38:55.85何通りか試したら、同等〜20%程inlineのほうが速いよ
最適化防止のコードを入れてないんじゃないの?
0275デフォルトの名無しさん
2011/11/26(土) 10:04:11.990276デフォルトの名無しさん
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巨大な関数ならともかく、小さな関数はインライン展開した方が高速。
巨大な関数を展開するコンパイラはないと思うが、されたらキャッシュに響くので低速になる場合がある。
>>271
意味のない比較
>>272
ソースがないので何とも言えないが、君のテスト方法が間違っている可能性大。
その配列のサイズを見る限り、インラインじゃないところにボトルネックがありそう。
0278デフォルトの名無しさん
2011/11/26(土) 19:47:26.08少し前に糞スレをage荒らししてたアホがいたもんで大事なスレが全部
下の方に行ってしまってる
0279デフォルトの名無しさん
2011/11/26(土) 19:53:06.42(引数や復帰アドレス保存のコストもかかるし)
10年前にスパコンのアセンブラソース読んだときは分岐先をキャッシュに読み込む命令があって
多少速度低下を軽減出来るようになってた。
0280デフォルトの名無しさん
2011/11/26(土) 20:02:37.24投機実行とリターンバッファで十分
0281デフォルトの名無しさん
2011/11/26(土) 23:14:18.16コンパイラの最適化を働かせるために無意味じゃない
0282デフォルトの名無しさん
2011/11/26(土) 23:18:06.91命令セットは新しいのに
0283デフォルトの名無しさん
2011/11/29(火) 22:20:26.93特に特殊フォルダで状態をデフォルトで表示したい場合に困っています。
シェルを使うのかと思ったんですが、わからず。
アドバイスお願いします。
0284デフォルトの名無しさん
2011/11/29(火) 22:27:00.770285デフォルトの名無しさん
2011/11/30(水) 08:57:39.38環境はXPでBCB使ってます。
特殊フォルダ内の名前なんかは取得できてるんですが・・・
C++でエクスプローラの「状態」項目を取得するのは無理ですか?
0286デフォルトの名無しさん
2011/11/30(水) 09:04:19.55WinAPIスレで聞いてきたら?
0287デフォルトの名無しさん
2011/11/30(水) 13:16:39.61ShellExtensionでぐぐれ
0288285
2011/11/30(水) 22:15:24.10そうですね。移動します。
ありがとうございました。
>>287
ggrましたが、正直理解し切れませんでした。>ShellExtension
まだシェル使うにはレベルが足りていないようなので、今回はあきらめます。
ありがとうございました。
0289デフォルトの名無しさん
2011/11/30(水) 22:30:18.04にはアクセスできない、とエラー吐きます。
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一時オブジェクトが解体出来ないって怒ってるんじゃないの
0291289
2011/11/30(水) 23:15:30.73解体できない、という意味がよくわからなかったのですが、
以下のような理解であってます?
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.92auto_ptrと同じような働きでmoveセマンティクスにしただけだから
shared_ptrにしないとまずい
0293デフォルトの名無しさん
2011/11/30(水) 23:50:02.24unique_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あとsetとか入れた時の挙動も気になる
0296デフォルトの名無しさん
2011/12/01(木) 00:32:34.19もちろん -std=c++0x は付けた
0297289
2011/12/01(木) 01:02:04.85http://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.840299デフォルトの名無しさん
2011/12/01(木) 01:12:56.51同じようにまたやらかすと思うんよ。
0300デフォルトの名無しさん
2011/12/01(木) 01:47:37.94> std::move付ければうまいことやってくれないかと試しましたがやはり駄目
これがわからん。VC++では知らないがmoveで動くはずだぞ。どうやった?
0301デフォルトの名無しさん
2011/12/01(木) 11:15:02.080302デフォルトの名無しさん
2011/12/01(木) 12:04:26.890303デフォルトの名無しさん
2011/12/01(木) 13:01:48.600304デフォルトの名無しさん
2011/12/01(木) 18:27:56.860305289
2011/12/01(木) 21:03:26.81試したコードは以下。
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.820307デフォルトの名無しさん
2011/12/01(木) 21:33:12.97代入演算子も要求されるみたいだね。なくてもpush_backは実装できると思うんだけど
http://ideone.com/o7KRx
0308sage
2011/12/01(木) 21:42:22.99ありがとうございます。
代入演算子は全く頭になかったです。
自分の間違いが分かり安心しました。
どうもありがとうございました。
0309デフォルトの名無しさん
2011/12/01(木) 21:49:31.78> 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おおgcc4.6.1で通った
Eclipse CDT Indigoが馬鹿過ぎる
早くC++11に対応してくれ
画面が波線ばかりで見にくい
0311デフォルトの名無しさん
2011/12/01(木) 22:27:50.38SP1で修正されたものなのか>>289の環境がおかしいのかは知らん
0312289
2011/12/03(土) 01:22:45.504.6.1に上げたら確かに通りました。
ちゃんと最新バージョンチェックしないと駄目ですね。
ソースまでありがとうございます。
>>311
SP1は入れたつもりになっていただけで入っていなかったようです。
改めてSP1入れてからやったら305のコードはすんなり通ったので、
SP1で修正されたっぽいです。ありがとうございました。
0313デフォルトの名無しさん
2011/12/03(土) 21:08:24.91毎回「クラス名::関数名」ってかかなあかんの?
0314デフォルトの名無しさん
2011/12/03(土) 21:15:46.80void f() { }
};
って書けばいいよ
0315デフォルトの名無しさん
2011/12/03(土) 21:52:42.540316デフォルトの名無しさん
2011/12/03(土) 22:58:06.850317デフォルトの名無しさん
2011/12/03(土) 23:01:02.270318デフォルトの名無しさん
2011/12/04(日) 00:00:59.86結構大変っすね
0319デフォルトの名無しさん
2011/12/04(日) 00:06:26.19namespace foo {
class hoge {
void f(void);
};
}
// cpp
typedef foo::hoge FH;
void FH::f(void) { /* ry */ }
ほんのすこしだけどらくできる
0320デフォルトの名無しさん
2011/12/04(日) 08:11:24.81関数の別名定義ってできましか?
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 h f
でよくね
0323デフォルトの名無しさん
2011/12/04(日) 09:39:44.37gとか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.140327デフォルトの名無しさん
2011/12/04(日) 10:20:32.12g とか 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現実にはそれが便利なことがあるのですよ。
そうでないと実装が難しいこともある。
実装は、常に現実の問題解決を優先すると、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.430333デフォルトの名無しさん
2011/12/05(月) 17:37:49.600335デフォルトの名無しさん
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.670340デフォルトの名無しさん
2011/12/12(月) 12:28:56.010341デフォルトの名無しさん
2011/12/12(月) 17:26:11.73http://bellard.org/otcc/
自分自身を実行できるCのサブセットのx86コンパイラ(インタプリタではない)。
イチから書き上げるのは面倒だが、ちょっとコンパイラをhackしたい。
pccはまだしも、gccだのllvmだのは大げさ。最適化はいらない。
っていうのに合う、いじり元みたいなのを、趣味用にのんびり探してる
なんかおすすめあったら教えて
可能ならC++で できたらGPLよりBSDが好き
0342デフォルトの名無しさん
2011/12/12(月) 17:49:51.240343デフォルトの名無しさん
2011/12/12(月) 23:53:53.10int 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.120345デフォルトの名無しさん
2011/12/13(火) 01:03:45.10http://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.740347デフォルトの名無しさん
2011/12/13(火) 08:54:35.79グローバルなレジストリクラスに製造したものをマークして、破棄されたらレジストリから除外
ってやるより低コストな方法ないですか?
0348デフォルトの名無しさん
2011/12/13(火) 08:56:03.460349デフォルトの名無しさん
2011/12/13(火) 09:01:34.330350デフォルトの名無しさん
2011/12/13(火) 10:53:52.580351デフォルトの名無しさん
2011/12/13(火) 17:12:44.480352デフォルトの名無しさん
2011/12/13(火) 17:19:02.98>>347
起動時にRPCサーバ探す、なければ自分がRPCサーバになる
そのRPCサーバがユニークIDを発行
>>349
…たぶん、UUIDで十分な気がするが
0353デフォルトの名無しさん
2011/12/13(火) 18:23:10.580354デフォルトの名無しさん
2011/12/13(火) 18:27:45.83マシンの進化はそんなことお構いなしだ
0355デフォルトの名無しさん
2011/12/13(火) 19:04:41.86gdbを使用してテストをしているのですが、例外を発生させられず困っています。
try {
int *p = new int;
}
catch(...) {
//☆ここにいれたい。
}
どなたかご教授お願いしますm(_ _)m
0356デフォルトの名無しさん
2011/12/13(火) 21:30:57.71自前のnewオペレータを作って、その中で例外を発生させたら?
0357デフォルトの名無しさん
2011/12/13(火) 22:06:28.08#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レスサンクス。
参考にさせて頂きました。
0359デフォルトの名無しさん
2011/12/13(火) 23:15:16.89int i;
float f;
std::string s;
Hoge h;
};
みたいに書きたいのだけどできませんどうすればいいでしょうか
0360デフォルトの名無しさん
2011/12/13(火) 23:44:51.020361デフォルトの名無しさん
2011/12/14(水) 00:40:16.810362デフォルトの名無しさん
2011/12/14(水) 01:07:10.740363デフォルトの名無しさん
2011/12/14(水) 08:07:51.12gccならputs(str);に書き換える位だからな。
0364デフォルトの名無しさん
2011/12/14(水) 09:10:45.970365デフォルトの名無しさん
2011/12/14(水) 09:13:37.380366デフォルトの名無しさん
2011/12/14(水) 11:26:40.64みたいなマズいコードにならないのは良いところだと思う
0367デフォルトの名無しさん
2011/12/14(水) 14:30:00.13扱う度にヒープへアクセスするメンバ変数が遅い
関数ごとに引数やローカル変数へ落とし込みスタックで処理して返す
ソース汚すぎわろた
0368デフォルトの名無しさん
2011/12/14(水) 22:43:46.02ソースうp
0369デフォルトの名無しさん
2011/12/15(木) 01:56:12.88どんな処理か知らないが、そこがボトルネックになるようなジャンルは
滅多にないと思う。無駄なことをしてないことを祈る。
0370デフォルトの名無しさん
2011/12/15(木) 03:04:59.57という本を読んで、早速BorlandC++5.0をインストール。
が、コンパイラのパスと環境変数PATHの設定でwinXPまでしか書いてなくて困っている。
当方windows7starter。
お願いします。
0371デフォルトの名無しさん
2011/12/15(木) 03:15:37.43自己解決った。
初めて踏み込むからビビリすぎたみたい。
スレ汚しごめんよ。
0372デフォルトの名無しさん
2011/12/15(木) 06:04:27.340373デフォルトの名無しさん
2011/12/15(木) 10:16:07.00CreateProcessでコマンドプロンプトおよびコマンド(たとえばdirなど)を起動し、
その標準出力をパイプで取得しようと考えています。
この際にUSモード(英語表記)でコマンドプロンプトを起動したいのですが、これはどこで指定すればよいのでしょうか?
現在は、
cpch 437
dir
みたいな.batファイルを作成してそれを実行しているのですが何ともダサいなぁと思っています。
そもそもUSモードで起動できれば良いのかなと思いました。
よろしくお願いします。
0374デフォルトの名無しさん
2011/12/15(木) 10:44:34.63cmd /k us
じゃだめなん?
0375373
2011/12/15(木) 10:49:19.78おお、ありがとう。私もちょうどそのあたりにたどり着きそうだった。
cmd.exe /k usは、うちの環境ではus.batがなかったので通らず、
cmd.exe /c chcp 437
で行けそうな感じ。createprocessのプログラム引数で渡して起動してみる。
サンキュー。
0376373
2011/12/15(木) 10:55:31.25if(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.890379デフォルトの名無しさん
2011/12/16(金) 23:12:47.670380デフォルトの名無しさん
2011/12/17(土) 05:09:37.570381デフォルトの名無しさん
2011/12/17(土) 09:36:28.86オブジェクト(対象物)のハンドル(取っ手)です。
0382デフォルトの名無しさん
2011/12/17(土) 09:40:02.770383デフォルトの名無しさん
2011/12/17(土) 12:17:05.79この場合、ハンドル=なにかを間接的に操作するもの、であってポインタかもしれないし、
オブジェクトの実体を入れた配列のインデックスかもしれないし、オブジェクトの管理者が付けた一意の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例えばWindowsのウィンドウハンドル(hWnd)は(事実上)整数。
0387デフォルトの名無しさん
2011/12/18(日) 10:21:27.990388デフォルトの名無しさん
2011/12/18(日) 10:35:50.49windowsの話はいいから利点を教えて
0389デフォルトの名無しさん
2011/12/18(日) 10:39:08.53整数値も再利用はされるが普通は桁あふれするするまで再利用されないので
無効になったハンドルが保持され続けてアクセスされた場合に問題になりにくい。
0390デフォルトの名無しさん
2011/12/18(日) 11:05:49.62ハンドルは異なるアドレス空間でも共有できる。
0391デフォルトの名無しさん
2011/12/18(日) 11:27:42.300392デフォルトの名無しさん
2011/12/18(日) 14:34:18.250393デフォルトの名無しさん
2011/12/18(日) 15:08:00.68時代遅れという意見もよく聞きますので・・・
0394デフォルトの名無しさん
2011/12/18(日) 15:09:57.930395デフォルトの名無しさん
2011/12/18(日) 15:10:43.15スペースシャトル
電気自動車
0396デフォルトの名無しさん
2011/12/18(日) 15:14:12.79重要な部分で使われているのですね
学習意欲がアップしました。ありがとうございます
0397デフォルトの名無しさん
2011/12/19(月) 00:25:47.35そして、他の言語はC言語よりもずっと多機能で扱いやすい代わりに、
実行速度が異様に遅いことに愕然としてみたり・3・;
0398デフォルトの名無しさん
2011/12/19(月) 01:52:19.88C++を含む他言語のライブラリ習得が難しくなってしまった
アタマが硬くなってしまったらしい
そういや、昔のコードを見返すと、汚かったが、賢かったような気がする
プログラミングはアマでやってるので、仕事に影響はないようなもんだが、
硬くなってしまったアタマは仕事に影響があり、プログラミングを通して、
アタマをやわらかくしたい。
いい方法はないか。ネタ、マジレス両方で。
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スポーツすると頭に酸素がよく回って活発になるよ
0401デフォルトの名無しさん
2011/12/19(月) 23:03:50.86いいこときいた
ありがとう
0402デフォルトの名無しさん
2011/12/20(火) 00:14:04.66・楽しめる部分を見つける。
見つからなければ、状況を楽しんでみる。
・苦痛を感じる手前で一旦休憩して再度トライする。
0403デフォルトの名無しさん
2011/12/20(火) 00:54:10.94新しい言語の学習がうまくいかないのは、大抵、
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.00Stroustrup自身は、マルチパラダイム言語or効率的なライブラリ構築用言語だと表明してるのに。
こっちではうまくいった。
http://codepad.org/f1VObYKz
0407デフォルトの名無しさん
2011/12/20(火) 01:51:53.23構造体の配列が静的にしか作れません。
中身のポインタは、要素ごとにmallocできるんですが、、、
作り方教えてください
0408デフォルトの名無しさん
2011/12/20(火) 01:56:19.16ありがとうございます!
プリプロセッサの使い方が間違っているのかどうか自信がなかったのですが、
貼る過程で省略した部分のどこかが原因のようなので
もう一度自分で考えてみます。
0409デフォルトの名無しさん
2011/12/20(火) 04:41:36.15心配するな、誰もそんなことを思っていない。オブジェクト指向でもコードが書けるCだと思ってる。
大体STLを始めとするテンプレートライブラリなんて、オブジェクト指向の真逆を突き進んでる。
0410デフォルトの名無しさん
2011/12/20(火) 05:30:32.490411デフォルトの名無しさん
2011/12/20(火) 05:42:27.19STLのアーキテクチャの多くはアレクサンドル・ステパノフという一人の人物の手によって作られた。
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言語仕様を選択できるようなビルドオプションを仕様化してくれないかな・・・
0413デフォルトの名無しさん
2011/12/20(火) 12:27:04.18int 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));
}
0415デフォルトの名無しさん
2011/12/20(火) 18:41:02.33ありがとう、ちょっと精液出た
0416デフォルトの名無しさん
2011/12/21(水) 07:51:43.03ありがとうございます。できました。
0417デフォルトの名無しさん
2011/12/21(水) 13:49:27.000418デフォルトの名無しさん
2011/12/21(水) 14:16:08.270419デフォルトの名無しさん
2011/12/21(水) 14:22:37.56ありがとうございます
本には「大きさ」としかかかれてなかったもので
0420デフォルトの名無しさん
2011/12/21(水) 15:40:29.84これは「引数のない関数形式マクロ」と解説されているのですけど、オブジェクト形式マクロとの違いがわかりません
これをオブジェクト形式マクロと解釈するのは間違っているのでしょうか?
0421デフォルトの名無しさん
2011/12/21(水) 15:51:02.250422デフォルトの名無しさん
2011/12/21(水) 16:45:08.48alert(); → (putchar('\a'));
#define alert (putchar('\a'))
alert(); → (putchar('\a'))();
0423デフォルトの名無しさん
2011/12/21(水) 17:32:57.47やっぱり実行時コストの掛からない前者ですかね?
0424デフォルトの名無しさん
2011/12/21(水) 17:39:20.040425デフォルトの名無しさん
2011/12/21(水) 23:08:23.34C言語でファイルをオープンして
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.12arrayの型も書かずに質問かよ。
まぁどうせ、ポインタを代入しているってことはarray[][]がポインタなのだろうけど。
どっち途、文字列操作を勉強しなおすことをお勧めする。
0427デフォルトの名無しさん
2011/12/21(水) 23:21:54.55ありがとうございます。
char *array[i][100]としてます。
うーん、ちょっと文字列操作について調べてみます・・・
0428デフォルトの名無しさん
2011/12/21(水) 23:52:55.42#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ありがとございます!できました。
ポインタについてかなり詳しく勉強しないと・・・ってことがわかりました><
またお願いします!
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.830432デフォルトの名無しさん
2011/12/23(金) 18:17:16.33C++と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.91class 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.590435デフォルトの名無しさん
2011/12/23(金) 19:06:03.830436デフォルトの名無しさん
2011/12/23(金) 19:09:48.93同じ値の範囲を探してランダム並び替え
0437デフォルトの名無しさん
2011/12/23(金) 20:14:06.92ソートが終わらなくなる、とかいう危険はないよね?
0438デフォルトの名無しさん
2011/12/23(金) 20:47:41.72> ソートが終わらなくなる、とかいう危険はないよね?
sortのアルゴリズムと運によってはある。だから>>436の方向が無難
0439432
2011/12/23(金) 21:23:10.08>>433の方法試してみたら、invalid operator< のエラーが出てしまいました。
原因が分からないので、>>436でやってみようと思います。
0440デフォルトの名無しさん
2011/12/23(金) 22:02:14.620441デフォルトの名無しさん
2011/12/24(土) 03:07:02.28作りたいんですが、何を使えば楽に作製できますか?
今はC++とWin32APIで作ってるけど、どうも古臭い見た目になってしまう
0442デフォルトの名無しさん
2011/12/24(土) 04:59:37.810443デフォルトの名無しさん
2011/12/24(土) 07:45:30.21詳しくないんで雑談としてだが、今風のUIコンポーネントのライブラリは多少充実してるらしい
0444デフォルトの名無しさん
2011/12/24(土) 08:22:36.720445デフォルトの名無しさん
2011/12/25(日) 01:20:49.67ありがとう、DirectXか.NETか。
DirectXは本1冊だけだけど読んだから、やりたい処理を組む際の必要な勉強量は少ない
だろうけど、組むのが面倒そうだなと思っちゃう。
一度機能毎に細かく分けて作っておけばそうでもないんだろうけど。
.NETは触ったことも無いんだけど、開発効率よさそうだね。ちょっと.NET調べてみる
>>444
そうなんだろうけど、一人で全部やらなきゃいけないのよ
研究展示で人に触って貰えるように、GUIで操作できるようにしているんだけど
どうせならかっこいいインターフェースの方が受けいいし
中身はデータベース処理なんだけど、この結果を視覚的に表現したい
ここでヌルヌルアニメーションしたいんだよね。
例えるならスパイシーっぽい感じだけど、そんなに凝る気もなくある程度簡素なのを
0446デフォルトの名無しさん
2011/12/25(日) 06:12:25.790447デフォルトの名無しさん
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ターゲット(ボード)っていうより、core process か。
0450デフォルトの名無しさん
2011/12/25(日) 13:59:56.65ありがとう、ユーザーインターフェイス面はHTML5で作成してブラウザで賄うってことか
それはかなり便利そう。だけど来月中旬には完成させたいので今からHTML5勉強して
実用域までもっていくのは辛いです。
.NETも調べてみたらこの目的だと辛そうだし、やっぱDirectXまたはOpenGLで作ってみる
ことにします。後々のAndroidへの移植も考えてOpenGLでいこうかな
0451デフォルトの名無しさん
2011/12/25(日) 20:15:58.75来月中旬までなら、丸々一週間は勉強する時間があるじゃないか。
0452デフォルトの名無しさん
2011/12/25(日) 23:38:46.40よさげなUIがあって、それが誰でも使っていいライブラリの仕事だったら、
あなたが使ってもいい。
DX/GLに、そんなパクりやすいライブラリあるのかな、と思うが、あるのかもしらん
0453デフォルトの名無しさん
2011/12/28(水) 20:02:39.02ラップしてる方のアドレスか、中身のアドレスか
0454デフォルトの名無しさん
2011/12/28(水) 20:19:14.58# 覚悟を決めて、「車輪は一度は作って壊してみるもの」をやってみる。
0455デフォルトの名無しさん
2011/12/28(水) 23:30:42.65確かに、研究や腕試しなら作ってみるのもいいけど実用ならそれなりにメジャーな出来合いのものを使うべきだな。
で
>>453
> スマポ(あるいは薄いラッパー系やプロクシ)作るときにoperator &はどう作るのが一般的なんだろうか
> ラップしてる方のアドレスか、中身のアドレスか
独自には作らずそのままスマポ自体のインスタンスのアドレスを取得させるのが普通。
0456デフォルトの名無しさん
2011/12/29(木) 15:55:45.10//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.460458デフォルトの名無しさん
2011/12/29(木) 16:06:46.17でもパフォーマンス問題は実測が基本
0459デフォルトの名無しさん
2012/01/02(月) 10:28:21.99const 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文字列型だけ特別扱いされて、アドレス渡すと中身が表示される。
0461デフォルトの名無しさん
2012/01/02(月) 10:39:27.10cout << *(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.380465デフォルトの名無しさん
2012/01/04(水) 18:18:38.260466デフォルトの名無しさん
2012/01/04(水) 21:39:42.100467デフォルトの名無しさん
2012/01/16(月) 09:27:53.08ここでは体重にしました。よく分からないので教えていただけないでしょうか。
参考書を読みながら書いてみましたが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その条件だけなら、二番目のループ自体不要だろ。
ついでに言えば、その後のiの出力も意味がない。
0470デフォルトの名無しさん
2012/01/16(月) 17:06:06.200471デフォルトの名無しさん
2012/01/18(水) 23:25:45.05二次元ベクタにキャラクターを入れて、その全てを描画する方法として、例えば、
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.930473デフォルトの名無しさん
2012/01/19(木) 01:13:26.33void 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.750475471
2012/01/19(木) 05:27:53.71まだC++始めて日が浅いのでこの機能は知りませんでした!
>>472-474
教えてくださった皆さんありがとうございました。
0476デフォルトの名無しさん
2012/01/20(金) 17:08:39.530477デフォルトの名無しさん
2012/01/20(金) 17:11:41.590478デフォルトの名無しさん
2012/01/20(金) 17:23:09.98ありがとう
0479デフォルトの名無しさん
2012/01/20(金) 17:36:37.31はどこに掛かってるんですか
0480デフォルトの名無しさん
2012/01/20(金) 17:50:36.190481デフォルトの名無しさん
2012/01/20(金) 17:54:12.440482デフォルトの名無しさん
2012/01/20(金) 18:00:41.1416bitは動かないから、32bitまたは64bitじゃないかな
0483デフォルトの名無しさん
2012/01/20(金) 18:04:16.54実質ただの整数なんだから32でも64でも大差ないでしょ
0484デフォルトの名無しさん
2012/01/20(金) 18:10:11.41VCならばこのあたりに注意すれば十分かと
ttp://msdn.microsoft.com/ja-jp/library/3b2e7499.aspx
0485デフォルトの名無しさん
2012/01/20(金) 18:18:18.310486デフォルトの名無しさん
2012/01/20(金) 18:21:09.880487デフォルトの名無しさん
2012/01/20(金) 18:25:58.21typedef一発だよ
0488デフォルトの名無しさん
2012/01/20(金) 18:29:13.02typedef 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いちいち問題にする事自体が時間の無駄
0490デフォルトの名無しさん
2012/01/20(金) 22:08:26.580491デフォルトの名無しさん
2012/01/21(土) 02:09:08.83size_tのおかげで、しれっと使ってるけど、良く考えたら何の略か知らなかったので、
この際教えて欲ください。
0492デフォルトの名無しさん
2012/01/21(土) 02:16:15.680493デフォルトの名無しさん
2012/01/21(土) 02:51:54.940494デフォルトの名無しさん
2012/01/21(土) 02:54:28.660495デフォルトの名無しさん
2012/01/21(土) 09:39:30.24大抵の場合変数名とかぶるのが気持ち悪いというだけの理由で付けられたものだよ
0496デフォルトの名無しさん
2012/01/21(土) 23:18:35.97ソース
// C/C++の薀蓄もきちんと知りたい年頃。
// 納得はしている。
0497デフォルトの名無しさん
2012/01/22(日) 16:44:34.75今まで継承していたクラスをメンバに持たせて関数を呼び出すだけのinlineメンバ関数を定義するするほうが複雑なコードを組みやすい気がするんですけど
0498デフォルトの名無しさん
2012/01/22(日) 16:51:24.820499デフォルトの名無しさん
2012/01/23(月) 11:59:33.25Javaみたいに全部.でやったほうがクールだと思います
0500デフォルトの名無しさん
2012/01/23(月) 14:34:16.26Javaを意識して、極力参照で書くようにポリシを決めることはできる
君が自由人(個人開発者)なら、まったく君の自由だ
C/C++には、壊れてたり、nullだったりするポインタ型の値を扱う「資格」があるんだよ
C系のみとは言わないが、そこには誇りすらある
# 休憩しにきた
0501デフォルトの名無しさん
2012/01/24(火) 11:35:16.680502デフォルトの名無しさん
2012/01/25(水) 20:19:38.03もう忘れた
0503デフォルトの名無しさん
2012/01/25(水) 20:54:01.800504デフォルトの名無しさん
2012/01/25(水) 21:53:31.45enumの型ごとに値の遷移テーブル(それかswitchで次を見つけるだけの関数)を作るみたいな、地道な作業するしかないかな?
0505デフォルトの名無しさん
2012/01/25(水) 22:18:47.13好きにしたらいいよ
0506デフォルトの名無しさん
2012/01/25(水) 22:55:00.76num[]={1,3,7}; とsize=3を別に持っとけ。
このデータを前処理で自動生成してもよい。
0507デフォルトの名無しさん
2012/01/25(水) 23:15:40.860508デフォルトの名無しさん
2012/01/25(水) 23:17:53.770509デフォルトの名無しさん
2012/01/26(木) 18:00:43.29.cファイルを右クリックしてコンパイルすると.objファイルができるじゃないですか。
このできた.objファイルを他のプロジェクトで使いたいんですよ、javaの.classファイルみたいなイメージで。
でもソリューションエクスプローラには「ソースファイル」「ヘッダーファイル」「リソースファイル」とあるんですが、どこに置いてどうincludeすれば使えるようになるんですか?
0510デフォルトの名無しさん
2012/01/26(木) 18:21:54.58・ただし、リンカコメントというのをソースに埋め込むと、.cで.objを引っ張り込むことを記述できる。
0511デフォルトの名無しさん
2012/01/26(木) 19:57:25.12リンカコメントですね、ググってみます。
ありがとうございます。
0512デフォルトの名無しさん
2012/01/26(木) 20:22:45.05と思ってたら、通称だったかも。うまく出せない。
> #pragma comment(linker, "...")
こういうのなので、ぐぐってみそ。
で、そんなことをするうちに、include 的に記述するより、
プロジェクト設定みたいので指定するのが自然ってのがわかると思う
0513デフォルトの名無しさん
2012/01/26(木) 20:49:19.22後々そっちの方がいいよ
0514デフォルトの名無しさん
2012/01/27(金) 09:03:21.79ありがとうございます。色々試してみます。
>>513
nmakeって元から入ってるのならいけると思います。
自分のバソコンじゃないのでインストールとかはできないです。
0515デフォルトの名無しさん
2012/01/28(土) 14:49:21.250516デフォルトの名無しさん
2012/01/28(土) 23:43:59.130517デフォルトの名無しさん
2012/01/29(日) 07:35:41.50文字定数と文字列定数はいちいち_T()で囲わないとダメですか?
一部をANSIで扱うことってありえますか?
0518デフォルトの名無しさん
2012/01/29(日) 08:09:51.62食わせない場合はUTF-8として扱う
かな
0519デフォルトの名無しさん
2012/01/29(日) 22:37:04.75_T使わなくても平気じゃないかな
0520デフォルトの名無しさん
2012/01/29(日) 22:53:52.300521デフォルトの名無しさん
2012/01/29(日) 22:56:40.08分を返す
int Time::min( ) const
を用意したのですが、
VC++ 2010だと、windows.hをインクルードした際に
マクロmin(a,b)(((a)<(b))?(a):(b)) と解釈されてしまい
引数が足りないというコンパイルエラーになります。
このコンパイルエラーを回避するためには
min()の名前を変更する以外に方法は無いのでしょうか?
よろしくお願い致します。
0522デフォルトの名無しさん
2012/01/29(日) 23:22:39.490523デフォルトの名無しさん
2012/01/29(日) 23:23:52.48includeした後にundefする。でも衝突しそうな名前は初めから避けるべき
0524デフォルトの名無しさん
2012/01/30(月) 00:39:48.02ファイルの中身は知らん
0526デフォルトの名無しさん
2012/01/30(月) 10:10:56.900527デフォルトの名無しさん
2012/01/30(月) 14:50:02.330528デフォルトの名無しさん
2012/01/30(月) 22:38:39.10windows.hって相当昔からあるから、STLが規格に入る以前に作られてたとか
0529デフォルトの名無しさん
2012/02/03(金) 00:18:22.76ある関数の宣言もとや使用箇所を手早く探せるようにしたいです。
以下、今まで使ってたもの。
ctags :同じ名前の関数(オーバーライドされてる関数)があるとき、
候補をリスト表示できない。
関数やメンバを使用している箇所を表示できない。
GNU Global :構造体のメンバを検索したり、
関数定義もとを探すときに見つからないことがある。
Windows 、Linux のどちらかで使えれば良いです。
0530デフォルトの名無しさん
2012/02/03(金) 00:31:09.18コンパイラ提供のインクルードパスをgrepかけることあるがそれほど時間掛からん。
0531デフォルトの名無しさん
2012/02/03(金) 10:17:31.94grep,ファイラー,テキストエディタはさすがに用意できるだろうし
0532デフォルトの名無しさん
2012/02/03(金) 13:40:47.76まったくのベタだが、結局これがいちばん早かった
0533デフォルトの名無しさん
2012/02/05(日) 15:08:59.03〜〜ヘッダファイル内〜〜
#include "c_B.h"
class c_A
{
c_B hoge;
};
〜〜〜〜〜〜〜〜〜〜〜
でインスタンス生成できちゃうんですか
0534デフォルトの名無しさん
2012/02/05(日) 15:46:32.64つ[Doxygen]
>>533
できない。
0535デフォルトの名無しさん
2012/02/05(日) 18:41:28.49だとすると内部で+=や++オペレータを呼ぶだけのadvanceは終わりをチェックしてくれていないの?
0536デフォルトの名無しさん
2012/02/05(日) 18:43:48.010537533
2012/02/05(日) 19:56:00.52インスタンスも生成されるのでしょうか?
という質問でした
0538デフォルトの名無しさん
2012/02/05(日) 19:59:31.870539デフォルトの名無しさん
2012/02/05(日) 20:44:34.41それで何か困るなら、ラッパクラスを作ってもいい
0540デフォルトの名無しさん
2012/02/05(日) 21:03:30.46ohそうなのか。ありがとう
規格上どのコンテナのイテレータでもそうなってる訳?
0541デフォルトの名無しさん
2012/02/05(日) 21:05:46.990542デフォルトの名無しさん
2012/02/05(日) 23:09:47.26ifstream ifs("csvファイル.csv");
string line;
getline(ifs,line);
//※ここで、別のファイルを開きたくなったので、
ifs.open("別のファイル.csv");
ってやった場合、マズかったりしますか?
それとも、ifsは「別のファイル.csv」をちゃんと頭から読み込んでくれますでしょうか?
0543デフォルトの名無しさん
2012/02/05(日) 23:16:38.660544デフォルトの名無しさん
2012/02/05(日) 23:19:07.660545デフォルトの名無しさん
2012/02/06(月) 01:10:08.63thx!
だとイテレータ使ったループって使いにくくない?
Cだとfor(i=0;i<10;i+=2);で偶数飛ばせるけどイテレータはいつもend()になったかどうか
チェックしないといけない。ぶっちゃけ改悪なのでは?
0546デフォルトの名無しさん
2012/02/06(月) 01:35:42.460547デフォルトの名無しさん
2012/02/06(月) 07:56:49.62って発想が
キモイと思うのだが
片リストを逆から辿ろうとしたら
「このコードはバヤイ!リバースコピーをいテレータ用に確保なう!」
「もっといい方法があるのにp」
と忠告してくれるコンパイラーがあるといい
0548デフォルトの名無しさん
2012/02/06(月) 08:07:20.64大概の実装はlistのsizeは定数時間になっていると思うが
0549デフォルトの名無しさん
2012/02/06(月) 11:33:49.80それとこれとは関係ない。
0550デフォルトの名無しさん
2012/02/07(火) 16:30:45.59int a = 1;
cout << a << endl;
a = 2;
}
whileブロック内で変数を定義したらどんなもんかとこれを試してみたら
無限に1が出力されました。初期化って一度だけかな?と思ったけど
この結果ということは、これは一回のループごとに毎回変数が定義されてる
ということですか?auto変数の確保→破棄を延々と繰り返すみたいな。
だとするとwhileブロックの外で定義した場合に比べて効率が悪いのですか?
0551デフォルトの名無しさん
2012/02/07(火) 16:33:50.32気にするほどの差はないだろ。最適化される。
使うときに明示的に定義した方が速いこともある。
長期間使用され続ける物は、CPUキャッシュに入りにくくなる可能性がある。
0552デフォルトの名無しさん
2012/02/07(火) 16:39:03.86たいした差はないということですが、プログラミング作法としても
whileブロック内での変数定義ってあたりまえのように使われるの
でしょうか(初期化のあるなしに関わらず)。
0553デフォルトの名無しさん
2012/02/07(火) 16:45:50.330554デフォルトの名無しさん
2012/02/07(火) 16:46:57.810555デフォルトの名無しさん
2012/02/07(火) 19:00:20.48{
std::vector<int> tmp(1000);
}
とかなら考え直したほうがいいな
0556デフォルトの名無しさん
2012/02/07(火) 19:06:36.55static std::vector<int> tmp(1000);
}
つまりこういうことですね?
0557デフォルトの名無しさん
2012/02/07(火) 23:25:52.31CPUキャッシュ ⇒ メモリ ⇒ HDD と配置が格下げされる。
HDDまでいったら値を読み込むのに時間食う。
新規に生成したほうが得。
メモリにあったとしてもそれを読み込むよりL1キャッシュに新規に生成した方が速いだろう。
0558デフォルトの名無しさん
2012/02/08(水) 01:45:33.96キャッシュミスより生成コストのが普通に高いと思うけど、
そんな事ありえるの?
0559デフォルトの名無しさん
2012/02/08(水) 03:11:26.310560デフォルトの名無しさん
2012/02/08(水) 08:25:58.69つまり、関数突入時にスタックポインタを移動するだけ。
0561デフォルトの名無しさん
2012/02/08(水) 08:58:10.220562デフォルトの名無しさん
2012/02/12(日) 18:45:29.51宣言か定義のどちらかにinlineが入っていればOKですか?
それとも両方書かないとだめですか?
0563デフォルトの名無しさん
2012/02/12(日) 22:11:37.43があったとして、
もし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スマートかどうかは知らん
0565デフォルトの名無しさん
2012/02/12(日) 22:25:24.660566デフォルトの名無しさん
2012/02/12(日) 22:27:17.510567デフォルトの名無しさん
2012/02/12(日) 22:37:50.98とかだめだったっけ
0568デフォルトの名無しさん
2012/02/12(日) 22:52:52.390569デフォルトの名無しさん
2012/02/12(日) 23:27:14.24int i;
for(i=0; i<4; i++) if(a[i] != 0) break;
if(i == 4) {
//全て0のときの処理
}
0570デフォルトの名無しさん
2012/02/13(月) 00:26:09.73if (*(int128*)a != 0)
0571デフォルトの名無しさん
2012/02/13(月) 08:16:17.690572デフォルトの名無しさん
2012/02/13(月) 08:23:37.82; /* なにもしない */
} else {
}
0573デフォルトの名無しさん
2012/02/13(月) 12:38:17.22宣言にinlineは、書いても書かなくてもinlineじゃないか?
定義はinlineにしたいならヘッダに書くべきだし、
ヘッダに書くとして複数includeする場合は、
inlineを書かないといけない。
1ファイルでしか使わない場合はシラネ
0574デフォルトの名無しさん
2012/02/13(月) 14:12:45.40テンプレートクラス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関数は型推論してくれるが、クラスはしてくれない決まりだから
0576574
2012/02/13(月) 22:46:09.01ありがとうございます。
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.78namespace _hoge {
struct _fuga {
void _func(void);
};
}
0578デフォルトの名無しさん
2012/02/15(水) 13:02:26.24×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グローバルスコープが禁止
0581デフォルトの名無しさん
2012/02/15(水) 20:43:27.29じゃあ入れ子になってれば可能なんですな。
0582デフォルトの名無しさん
2012/02/21(火) 12:57:48.48char* p[10];
p[0] = "Spring";
strcpy(p[0],"Summer");
一体どこをどう直せばよいのでしょうか?
0583デフォルトの名無しさん
2012/02/21(火) 13:03:26.26p[0] = "Spring";
p[0] = "Summer";
0584582
2012/02/21(火) 13:45:23.18ちなみにstrcpyを使うのは間違いなのでしょうか?
何が間違いなのかよく分からないのです
0585デフォルトの名無しさん
2012/02/21(火) 13:51:30.390586582
2012/02/21(火) 13:55:37.670587デフォルトの名無しさん
2012/02/21(火) 15:28:01.01a=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.330589デフォルトの名無しさん
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特殊化しないで使いたい場合はどうすればいいんですか?
0593デフォルトの名無しさん
2012/02/25(土) 17:36:17.810594デフォルトの名無しさん
2012/02/26(日) 03:37:46.380595デフォルトの名無しさん
2012/02/26(日) 05:19:34.45それを、hoge<int>でも使いたいとか、そういうことかな?
他はまったく思いつかない。
0596デフォルトの名無しさん
2012/02/26(日) 07:25:45.130597デフォルトの名無しさん
2012/02/26(日) 13:27:55.80他のコードと互換性がなくて仕方なく非特殊化バージョンを使いたいなーということはあるでしょ
bool参照しか受け取らない関数にvector<bool>の要素渡せないとか
0598デフォルトの名無しさん
2012/02/26(日) 16:53:20.32「ソートプログラムとデータ構造について
具体的なソートプログラムの名前をあげ、
とのようなデータ構造(配列、単方向リスト、双方向リスト、循環リストなど)が
なぜ適しているか述べろ。
が分かりません!教えてください
0599デフォルトの名無しさん
2012/02/26(日) 17:39:01.940600デフォルトの名無しさん
2012/02/27(月) 00:31:23.680601デフォルトの名無しさん
2012/02/27(月) 10:11:12.67まずソートの種類を調べるくらいは自分で出来るんじゃない?
それからそのソートに適したデータ構造と理由を聞けば…
ところで循環リストが適してるソートなんてあったっけ?
0602デフォルトの名無しさん
2012/02/27(月) 11:07:15.840603デフォルトの名無しさん
2012/03/16(金) 00:20:56.14文字列はstringを必ず使うべきなの?
0604デフォルトの名無しさん
2012/03/16(金) 00:33:04.280605デフォルトの名無しさん
2012/03/16(金) 07:49:56.89C++には高級アセンブラたるC言語の後継としての役割もあるから無いと困る
組み込み系はもちろんだし、そうでなくてもAPIとかはchar[]ベースだったりする
0606デフォルトの名無しさん
2012/03/17(土) 12:18:11.06もちろん、charを極力廃すような書き方をすることは可能だろう
0607デフォルトの名無しさん
2012/03/18(日) 20:24:47.88サンプルプログラムを教えてください。
0608デフォルトの名無しさん
2012/03/18(日) 23:02:30.36https://www.google.co.jp/
0609デフォルトの名無しさん
2012/03/19(月) 00:00:49.96int 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そもそも、なんで構造体の中から外を知ることができると思い込んだの?
0611デフォルトの名無しさん
2012/03/19(月) 00:27:02.08確かに言われて見れば・・・
とりあえず構造体のネストを消すように作り直してみます.
0612デフォルトの名無しさん
2012/03/19(月) 01:24:49.10参照は定義時に初期化しなければならない。まあやりたかったこととは違うだろうが。
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サンプルプログラムを教えてください。
0614デフォルトの名無しさん
2012/03/19(月) 21:26:51.56>>608
0615デフォルトの名無しさん
2012/03/19(月) 22:15:48.44ttp://codepad.org/zJKMXKy9
概念を理解できてれば多言語のソースでもなんとなく読めるはずだがな
0616デフォルトの名無しさん
2012/03/19(月) 22:48:35.81本質的なところじゃないけど、deleteしようぜ
0617デフォルトの名無しさん
2012/03/24(土) 13:51:17.470618デフォルトの名無しさん
2012/03/24(土) 14:14:55.960619デフォルトの名無しさん
2012/03/26(月) 20:12:58.720620デフォルトの名無しさん
2012/03/26(月) 20:42:27.780621営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:29:17.65*p++
>この文では最初にp をインクリメントし、次に新しいメモリアドレスにある
>値を得ます。
と、いう説明がありますが、"次に新しいメモリアドレスにある値" の意味が
わかりません。 仮にp に格納されているアドレスが100番地 だったとすると、
それが+1(char の場合) されて101 となるだけではないのでしょうか。
0622営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:54:39.35いいえ違います
0623営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:00:17.86その例では、101にある値。
0624営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:02:07.88ではどういう動作をするのでしょうか。詳しくお願いします。
0625営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:13:32.58なんとなくわかりましたが、101番地にある値が"得られる" というのが
いまいちしっくり来ません。 ひょっとしてこれは、ポインターが+1 されて、
それ以降、そのポインターを使ったときは、101 番地のデータが読める、
という意味で"得られる" と書かれたものだと解釈してよいでしょうか。
0626営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:30:40.63演算子の優先順位が
後置インクリメント(++) >> 前置インクリメント(++) >> 間接参照(*) >> 乗算(*)
この場合は
*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 が指す物を示す
0628営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:02:19.38具体的な例を挙げてくださり、ありがとうございます。
演算子の優先順位を忘れていました。カッコをつけるとわかりやすいですね。
ただ、残念ながらおっしゃっている事がまだ理解できません。
*p++ ・・・この文が、何かの変数や関数への代入文に使われているのなら、
「ポインターを+1 されたアドレスのデータを何かに代入しているんだな」 と
思えるのですが、参照している教科書には *p++ とだけしか書かれておらず、
何かに代入しているわけではないのです。
だったら * は不要で、 p++ だけでいいのでは? と思います。
ど素人の低レベルな質問で意味不明かもしれませんが、なにかヒントを下さい。
0629営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:07:33.60前後のコードもしくは文章plz
0630営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:21:45.24独習C から、該当部分を引用します。
>ポインタそのものに対してだけでなく、ポインタが指しているオブジェクトに
>対してもインクリメント演算子やデクリメント演算子を使用する事ができます。
>しかし、ポインタが指しているオブジェクトをインクリメントしようとするときには
>注意してください。 例えば、値1 の整数を指しているp があるとします。
>次の文を実行するとどうなるでしょうか。
>
> *p++
>
>予想は当たったでしょうか。この文では最初にp をインクリメントし、次に
>新しいメモリアドレスにある値を得ます。ポインタが指しているものを
>インクリメントするためには、次のような式を使わなければなりません。
>
> (*p)++
>
>かっこをこのように使うことによってp が指している値をインクリメントすることが
>できます。
>また、関係演算子を用いれば、2つのポインタの値を比較する事ができます。
>もちろん、ポインタの比較は、それが相互に関連している、つまり、同じ型の
>オブジェクトを指しているような場合に、初めて意味を持ちます。
以上該当部分です。何か重要な情報がありますでしょうか。
0631営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:35:48.07書いてるまんまだろ
参照先をインクリメントしたいときは (*p)++ と書け
*p++ と書いたらポインタ自体をインクリメントすることになる
って言ってるだけ
*p++ のコード自体に筆者の言いたい意味があるわけじゃない
0632営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 21:05:42.47>*p++ のコード自体に筆者の言いたい意味があるわけじゃない
なるほど。ここまで読み進めてきて、はしょった表現がなかったものですから、
勘違いしていたようです。 どうもありがとうございました。
0633営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 21:10:08.380634営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 22:44:18.36>> *p++
>>
>>予想は当たったでしょうか。この文では最初にp をインクリメントし、次に
>>新しいメモリアドレスにある値を得ます。
「インクリメント前のメモリアドレスにある値を得た後、pをインクリメントする。」だろ?
0635営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:34:04.05例えば、
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いや、大体わかったつもりです。
int n = *p++
// 配列a の先頭番地のデータ(0) をn に代入し、その後インクリメントされる。
int m = *(p++)
// p は+2 されているので、データ(1) がm に代入され、その後インクリメント。
これらの文が処理された後、p はデータ(2) の番地を指している。
・・こういう解釈であっていますよね。
0637営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:32:19.53nもmも式評価のときは*pで++は*よりも優先順位が高いから
結合するのはどちらもpだけってことだろ?
0638営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:42:30.17すいません、本当に素人で、釣りをしているわけではありません。
直球ど真ん中のマジレスでお願いします。
そこであえて質問ですが、"結合" とは、この場合どういう意味でしょうか。
0639営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:44:20.68>>636のいいたいインクリメントについては2章制御文その1でやってるから大丈夫だろ
ってかインデックス見ようと翔泳社見たら独習C絶版なのな
独習C++ってC読んでること前提で書かれてなかったっけ?
0640営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:57:11.02その演算子がある項に作用すること
後置インクリメント++の場合、単項演算子で結合性は右から左
また優先順位は参照演算子*よりも高いので
この場合(*p++)は++の左にある単項、pに作用する
後置インクリメントは評価後にインクリメントされるので
この式(*p++)自体の結果は*p
これでいい?
0641営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 20:49:01.75160km/h のストライク。よくわかりました。今後ともよろしくお願いします。
0642営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 20:54:47.31いや、絶版じゃないだろう・・・・・第3版のことか?
http://books.shoeisha.co.jp/book/b72093.html
独習C++が独習Cを読んでいる(C言語は既習である)ことを前提に書かれているのはその通り。
0643営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 21:02:35.80おおスマン
見落としていた
0644営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 03:19:18.51四捨五入のプログラムで
例えば1.666を第3位で四捨五入すると1.670000って表示されるんだけど
これを1.67と表示させるにはどうやったらできますか?
0645営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 03:24:44.660646営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 03:49:55.45サンクス
0647営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:05:15.76つ[ "%g"]
0648営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 17:20:56.61それとも、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該当スレできけば?
くだすれC++/CLI(初心者用)part2
http://toro.2ch.net/test/read.cgi/tech/1268613679/
0650営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:34:32.79そもそもnamespace Systemなんて標準のC++にはないよ。
0651営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:50:39.500652営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 20:26:16.99boost::asioでソケット周りできた。クッキーも仕様書みながらある程度できた。
javascriptはECMAScriptと戦わないとだめなのか?
0653営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 20:41:16.750654営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 21:04:59.820655営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 00:36:28.03ブラウザの進化の過程をたどるか、あるいは新発想のアーキテクチャでいくか。
ある程度の完成物を狙うなら、いったん、V8なり、JSCなりを呼ぶ実装がいい
そもそも、JavaScriptエンジンのインタフェース自体から、学ぶ点がある
0656営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:48:33.44http://ja.wikipedia.org/wiki/ECMAScript
0657デフォルトの名無しさん
2012/04/14(土) 15:40:27.10bool 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{
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.95flag=false;
select(i){
case 1: case 42: case 145: flag=true;
}
0661デフォルトの名無しさん
2012/04/14(土) 22:25:07.230662デフォルトの名無しさん
2012/04/14(土) 23:48:08.590663デフォルトの名無しさん
2012/04/15(日) 00:10:01.79struct 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.950665デフォルトの名無しさん
2012/04/15(日) 08:09:44.01が、一番シンプルに見えるわけだがw
0666デフォルトの名無しさん
2012/04/15(日) 14:31:40.480667デフォルトの名無しさん
2012/04/15(日) 21:22:35.700668543
2012/04/18(水) 22:11:53.62各番号が10回ずつ(各番号が同じ回数という意味で)出てくるように割り振りたいのですが
なにかいい方法ありませんか?
0669デフォルトの名無しさん
2012/04/18(水) 22:16:13.580670デフォルトの名無しさん
2012/04/18(水) 22:20:46.95そのような関数があったんですね。勉強になります!
ありがとうございました。
0671デフォルトの名無しさん
2012/04/18(水) 22:28:39.71C言語でマイクから入力した音声を送信する方法
もしくはマイクから入力された音声がどこに保存されているかを教えてください
0672デフォルトの名無しさん
2012/04/18(水) 22:43:31.860673デフォルトの名無しさん
2012/04/18(水) 23:00:22.03環境はbcpadです
0674デフォルトの名無しさん
2012/04/19(木) 00:00:32.770675デフォルトの名無しさん
2012/04/19(木) 06:51:33.03情報ありがとうございます!
0676デフォルトの名無しさん
2012/04/19(木) 14:52:44.05そうですが、それぞれの語源(何の略) か、教えてください。
0677デフォルトの名無しさん
2012/04/19(木) 15:05:36.010678デフォルトの名無しさん
2012/04/19(木) 15:26:44.81ありがとうございます!
0679デフォルトの名無しさん
2012/04/19(木) 21:37:51.520680デフォルトの名無しさん
2012/04/20(金) 01:33:52.490681デフォルトの名無しさん
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.55http://weekly.ascii.jp/elem/000/000/084/84599/
ドコモは「必要な費用」と説明したとのことですが、その費用はそもそも算定式に含まれているはず、
というのが日本通信側の主張です。
このため日本通信が差額の支払いを一時停止したところ、ドコモ側は「接続を切断する」と回答。
結果、ユーザーへの影響を考慮して、日本通信側はドコモ側の要求どおりの支払いを続けている、
というのが今の状況です。
0684デフォルトの名無しさん
2012/04/24(火) 06:23:00.541〜9までの連続する数字の間に和・差・積の演算子(+, -, *)を適当に入れて、
式の値がちょうど 100 となる例を挙げよ(10とおりだけ書け)。
たとえば、
1 + 2 * 3 * 4 * 5 + 6 * 7 - 8 * 9 = 91
というような計算をする。ただし、この例では式の値が91となるので答えではない。
0685デフォルトの名無しさん
2012/04/24(火) 06:33:39.440686デフォルトの名無しさん
2012/04/24(火) 06:35:50.340687デフォルトの名無しさん
2012/04/24(火) 06:55:17.27webサービスを呼ぶ、でもいい
0688デフォルトの名無しさん
2012/04/25(水) 00:26:53.55標準出力するCプログラムを書きたいのですがどうすればいいですか?
0689デフォルトの名無しさん
2012/04/25(水) 00:36:54.630690デフォルトの名無しさん
2012/04/25(水) 07:58:46.21出題者が、データはこれな。って言ってきてないか。
0691デフォルトの名無しさん
2012/04/25(水) 14:26:18.670692デフォルトの名無しさん
2012/04/25(水) 16:16:06.770693デフォルトの名無しさん
2012/04/25(水) 16:36:07.14数列は長いか?(数万件)
数値範囲が予測できるか?
範囲が狭いか?(1~10など)
小数点以下も必要か?
で方法が違う。
0694デフォルトの名無しさん
2012/04/25(水) 16:38:59.09CSTLのsetを使う
0695デフォルトの名無しさん
2012/04/25(水) 16:52:07.30数列は、int型で自由に入力したものになるので、長くなる可能性があります。
値の範囲は予測できません。
小数点は利用しません。
0696デフォルトの名無しさん
2012/04/25(水) 17:24:24.590697デフォルトの名無しさん
2012/04/25(水) 17:26:40.06「重複している値があれば取り出す」とあるが、例えば「1,1,1,1,1」という数列があったとき、
1は1回だけ取り出されるのか、それとも4回取り出されるのか。
0698デフォルトの名無しさん
2012/04/25(水) 18:08:25.02for (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.510700デフォルトの名無しさん
2012/04/25(水) 18:33:23.57日本語の問題だな。
取り出す→Action
抽出、除外→Process
0701デフォルトの名無しさん
2012/04/25(水) 18:46:10.920702デフォルトの名無しさん
2012/04/27(金) 04:00:59.03で、値をキーとしたmap<int value,int count> あたりに保存しておけば、
後はどんな要求にでも応えられるだろ。
0703デフォルトの名無しさん
2012/04/27(金) 10:38:56.91これはバッファオーバーランしてくださいって言ってるようなもので、
出てきた数値を逐一記憶するタイプの解法ではどんな巨大なメモリとディスク搭載したマシンでも仕様を満たせない。
唯一の可能性は重複する数値だけで構成される数列を生成する数式を見つけること。
0704デフォルトの名無しさん
2012/04/27(金) 14:39:07.54出力する行数が多い場合のやり方として、常套手段があれば、教えてください。
一行文字列を作ったら、ファイル書き込みか、
全行文字列を作ったら、一気にファイル書き込み。
メモリーが気になるので、前者で行いたいのですが、
計算途中でも出力する文字列があるので、迷っています。
0705デフォルトの名無しさん
2012/04/27(金) 14:46:47.66多くしすぎてもかわらない。
0706デフォルトの名無しさん
2012/04/27(金) 14:51:50.24lineout( 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.15lineout( 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昔のVBとかだったら1文字ずつ書き出すとそのたびにディスクアクセスしてたりするが、
OSやライブラリによっては自分でバッファ持って適当にまとめて書き込んだりするし、
今どきの1GBや2GBがデフォのPCではテキストがどれだけ膨れ上がろうが気にならない。
一番プログラム書きやすい形でやるのが常套手段ともいえる。
0709デフォルトの名無しさん
2012/04/27(金) 15:07:00.96OSが優れていればこのようなツールはいらない。
FastCopy
H.Shirouzu(白水啓章)
特徴:
Windows系最速のファイルコピー&削除ツールです。
Read/Write も、OS のキャッシュを全く使わないため、他のプロセス(アプリケーション)が重くなりにくくなっています。
可能な限り大きな単位で Read/Write するため、デバイスの限界に近いパフォーマンスが出ます。
MFC 等のフレームワークを使わず、Win32API だけで作っていますので、軽量&コンパクト&軽快に動作します。
全ソースコードは BSD ライセンスで公開していますので、VC++ 等をお持ちであれば、ご自由にカスタマイズしてのご利用も可能です。
0710デフォルトの名無しさん
2012/04/27(金) 15:10:21.23有意な差があるのか?
0711デフォルトの名無しさん
2012/04/27(金) 15:12:19.050712デフォルトの名無しさん
2012/04/27(金) 15:28:55.51なるほどです。これだと、ファイルを意識しなくてもスムーズに
出力できます。ありがとうございました。
0713デフォルトの名無しさん
2012/04/27(金) 15:42:03.21自分は安定性がいいので使っているが、調べると速度も良いらしい。
ファイルのコピー&削除が抜群に速い---「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勉強になったわ。
ありがとう。
0715デフォルトの名無しさん
2012/04/30(月) 03:37:10.460716デフォルトの名無しさん
2012/04/30(月) 06:47:09.530717デフォルトの名無しさん
2012/04/30(月) 07:35:03.89SystemCだのいって、ハードもCもどきで書いちゃうし、
シミュレータもたぶんC(こいつは根拠なし)。
いたるところ、地味にCでできてます
0718デフォルトの名無しさん
2012/04/30(月) 10:44:50.70クッキー関連がどうもうまくいきません。
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.490720デフォルトの名無しさん
2012/04/30(月) 10:59:05.140721デフォルトの名無しさん
2012/04/30(月) 11:41:55.93これって何をしてるんですか?
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違う
0724デフォルトの名無しさん
2012/04/30(月) 12:07:26.430725デフォルトの名無しさん
2012/04/30(月) 12:35:36.800726デフォルトの名無しさん
2012/04/30(月) 12:36:43.01「C# は初入門の言語として適切か」と言うものを受けることがあります。
多いのは、 「C 言語 → C++ というように段階を経て学んでいくべきなのではないか」という意見です。
「Java や C# だと、class や static など、最初に説明しないといけない“おまじない”が多いし・・・」とか、
「Java や C# などのオブジェクト指向言語を学ぶにしても、 その基本は構造化プログラミング言語だし」というのが、
これらの意見の理由です。
この質問に対する(僕個人の私的な)答えですが、 結論から言うと、初めから C# を学ぶ方がいいと思います。
例えば、C 言語なら最初から理解するのが難しい“おまじない”の部分がないかと言うとそんなはずもなく、
#include などはやはり“おまじない”ですし、 Java や C# などの新参の言語は、
構造化プログラミング言語としても見た場合でもかなり優秀な言語です。
むしろ、C 言語など、長い歴史を持つ言語は、 昔からの悪習を引きずっていて、
下手に学ぶと悪い癖が付いたまま抜けなくなる危険性の方が高いです。
0727デフォルトの名無しさん
2012/04/30(月) 12:44:12.48C の悪臭もとい悪習ってなんでしょうね。ちょっと興味深い。
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.95CもC#もやればいい ただ、「付いてくる」ライブラリが全然違うわけで、
たぶん、両方やってると、「…ああー。それでC#かー」って悟りが開けるんだろうか
どとねと系は食わず嫌い。やっぱ、自称C厨の俺がやるんなら、C++/CLIかなあ。
0732デフォルトの名無しさん
2012/04/30(月) 21:07:59.730733デフォルトの名無しさん
2012/04/30(月) 21:50:36.49http://dqn.sakusakutto.jp/2012/04/javascript_14.html
もう氏ねよこいつら。最近のウェブ屋ども頭おかしいわマジで。
JavaScriptのVMは何の言語で書かれてるの?
てめえの使ってるブラウザは何の言語で書かれてるの?
てめえの使ってるOSは、デバイスドライバは、何の言語で書かれてるの?
JavaScriptで書かれてる業務系や基幹システムどれだけあんだよ?小数点切り捨てたら0%じゃねえの?
科学技術計算は?ゲームプログラムは?コンピュータグラフィックスは?
0734デフォルトの名無しさん
2012/04/30(月) 22:11:52.59なにかというとスクリプト部分はVBSで書いてくるMSに何か言ってやってくれw
Write once, run anywhere の理想に近づいてるのは、いまやJSと。
そしてもちろん、その屋台骨を支えてるのはC/C++と。
両方制覇しちゃえばいいのだ。
0735デフォルトの名無しさん
2012/05/03(木) 19:30:49.58なにか初心者におすすめのソフトウェア(テキストエディタ?コンパイラ?みたいなやつ)ありますか?
0736デフォルトの名無しさん
2012/05/03(木) 19:33:59.270737デフォルトの名無しさん
2012/05/03(木) 19:34:32.870738デフォルトの名無しさん
2012/05/03(木) 19:38:25.880739デフォルトの名無しさん
2012/05/03(木) 20:02:41.680740デフォルトの名無しさん
2012/05/03(木) 20:12:18.270741デフォルトの名無しさん
2012/05/03(木) 20:14:09.350742デフォルトの名無しさん
2012/05/03(木) 22:05:34.77C でありがちな、「そのコンパイルエラーどっから来てる?」の癖も掴みづらいし
0743デフォルトの名無しさん
2012/05/03(木) 22:33:38.690744デフォルトの名無しさん
2012/05/03(木) 22:37:31.660745デフォルトの名無しさん
2012/05/04(金) 02:59:09.38普通の変数と同じように宣言(例えば"unsigned bool :1;"など)と
することは出来ないのでしょうか?
0746デフォルトの名無しさん
2012/05/04(金) 03:43:37.68ビットフィールドを構造体で使っているのではなく、
構造体の書式構造をビットフィールドの表記に流用しているだけです。
つまり、structと書いてあっても厳密な意味での構造体とは違います。
0747デフォルトの名無しさん
2012/05/04(金) 10:36:43.680748745
2012/05/04(金) 11:35:55.39ありがとうございます!少し分かってきた様な気がするのですが、まだいまいち分かりません・・・。
例えば以下のコードはビットフィールドと厳密な意味での構造体どちらになるのでしょうか?
struct {
unsgined char byte0;
unsigned char byte1;
unsigned bit: 0;
} test;
また「厳密な意味での構造体」の定義などについて詳しく教えて頂けると嬉しいです _ _
0749デフォルトの名無しさん
2012/05/04(金) 12:44:30.660750デフォルトの名無しさん
2012/05/04(金) 12:53:57.31何バイト確保されるかで大きく差が出る。
0751735
2012/05/04(金) 12:57:27.14いろいろありますね・・・
最初なんで、学校で使ってるEmacsか
メジャーらしいVC++か、ですかね
0752デフォルトの名無しさん
2012/05/04(金) 13:02:06.150753デフォルトの名無しさん
2012/05/04(金) 13:21:46.31森 公一郎さんにあやまれ
0754デフォルトの名無しさん
2012/05/04(金) 14:43:09.470755デフォルトの名無しさん
2012/05/04(金) 14:43:38.53てかマルチやめろ
0756デフォルトの名無しさん
2012/05/05(土) 17:48:15.54C++とDirectXを使ってアプリ作るのが最終目標なんですけど、以前誰かにC++やるならC覚えてからにしろって言われて
ずっとCの勉強をチマチマしてるんですけど
実際C++を勉強する上でCの知識って重要ですか?
どこまでCの勉強して、いつからC++に入ればいいのやら・・・
0757片山博文MZボット ◆0lBZNi.Q7evd
2012/05/05(土) 17:53:34.44C言語の関数とポインタと構造体が完全に理解できる
ようになったら、C++に進んでいい。
0758デフォルトの名無しさん
2012/05/05(土) 20:18:50.07そしてときどき、Cの教科書を読み返すと、知識が整理されていく
リアの後輩なら、そこで悩む前に、x86の汗の主な命令を覚える気でいろと言いたい
逆汗を読解できる水準で十分だし、必要ならそこからいくらでも伸びていく
0759デフォルトの名無しさん
2012/05/05(土) 22:10:47.54実はC++の表っ面だけならCを知らなくてもいいんだが
C++である程度踏み込むと結局Cの知識も要るし
何よりC++向けの資料はほとんどがCも習得してることを要求する
0760756
2012/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他人と開発するときに必要になったものを理解していけばいい
0763デフォルトの名無しさん
2012/05/06(日) 11:36:27.14そしたらアセンブラも不要説も成り立って、ビット列でプログラム書くのが一番という説になるな。
0764デフォルトの名無しさん
2012/05/06(日) 18:36:28.36あんなの飾りです。偉い人にはそれがわからんのですよ。
0765デフォルトの名無しさん
2012/05/06(日) 20:58:21.68C++は究極的にはC/汗に落とし込めるわけだから、
C++などなくても、プログラミングができるというのは正しい
C++を使う理由は、C++を使うとスマートに書ける場面のあること、
あと、C++を要求するAPIの存在。
まあいいんだよ、まずは我流でいいから覚えちまえ
0766デフォルトの名無しさん
2012/05/10(木) 10:46:14.63としたコメントアウトを目にしましたが、これはどういう意味があるのでしょうか?
0767デフォルトの名無しさん
2012/05/10(木) 11:14:32.36書いた奴に聞け。
何かツールで必要とする書式か、さもなきゃ検索用のおまじないだろ。
0768デフォルトの名無しさん
2012/05/10(木) 12:24:13.870769デフォルトの名無しさん
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.450773デフォルトの名無しさん
2012/05/10(木) 13:13:12.79コメントのネストを許すか許さないかで状況が変わってしまうような
書式を使用する時点で間抜けな書式なんだよ
0774デフォルトの名無しさん
2012/05/10(木) 13:17:39.980775デフォルトの名無しさん
2012/05/10(木) 15:49:36.70処理
// */
も最初の//をつけ外しすれば便利。
JSで多用してる。
0776デフォルトの名無しさん
2012/05/10(木) 16:11:39.25// 処理
の付け外しでいいよ
0777デフォルトの名無しさん
2012/05/10(木) 17:34:18.040778デフォルトの名無しさん
2012/05/10(木) 18:00:18.540779デフォルトの名無しさん
2012/05/10(木) 18:17:15.170780デフォルトの名無しさん
2012/05/10(木) 18:50:53.61#if 0
#endif
で囲めよ。ちなみに、C#なら#if falseな。
0781デフォルトの名無しさん
2012/05/10(木) 19:26:54.62その文をコメントアウトしている現状ではその前後の文を実行するが
その文を実行したいときにはその前後の文を実行したくないのでは?
まあ、もしそうならプリプロセサ使ったほうが良いとは思うけど…
0782デフォルトの名無しさん
2012/05/10(木) 19:47:10.68何これ便利すぎ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間違っていれば教えてください。
ターゲット側がlParamにビット演算?を使ってwParamのキーが押されたのか、離されたのかを判断しているようです。
このせいで、WM_KEYDOWNもWM_KEYUPも、ターゲット側で「押された」として判断されているような??
どのように送ってあげれば正しくターゲット側が解釈してくれますでしょうか?
(ターゲットはできれば弄らずに・・・)
よろしくお願いいたします。
0786デフォルトの名無しさん
2012/05/10(木) 22:16:55.730787783
2012/05/10(木) 22:39:47.01事情によりそれは困ります。
ターゲット側を書き換えて、WM_KEYDOWN/UPによってdownの値を変えてみようかと思いますが、
けっこうコード量が多く複雑なので、関連する部分で不具合が出ないか心配です。。。
(ビット演算でやっている意味や、SendMessage()のlParamにXXを指定すれば通る、みたいな回答が欲しかったり・・・)
0788デフォルトの名無しさん
2012/05/10(木) 23:22:42.980789デフォルトの名無しさん
2012/05/10(木) 23:54:07.49> 僕は、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を設定する必要がある
0790783
2012/05/11(金) 12:29:58.06貴重な情報ソースありがとうございます。
「受け取り側は基本的に無視していい」とあるので、ネットのSendMessageの
サンプルのほとんどがlParamにNULLを渡していたのだと思います。(それで僕は、lParamは常にNULLで構わないと誤解した)
今回は受け取り側が"正しい"処理をしているので、きちんとlParamを作らないといけないのですね。
0791783
2012/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どこでこんなアホな考えを教え込まれたんだ
>それぞれbitXにtrueを代入して、lPalam=(LPARAM)bits などとしても問題ないでしょうか?
問題大ありだ
sizeof BITSしてみろ
0793783
2012/05/11(金) 13:07:16.09調べてみたら、環境によって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.880795783
2012/05/11(金) 18:25:24.04WM_KEYDOWNのlParamをNULLでなくちゃんと作ることにしました。
仮想キーからスキャンコードの取得はAPIがありましたが、
拡張キーかどうかの判断は自前でしょうか?
コンテキストコード、変換状態フラグは「WM_KEYDOWNのときは常に0」とありましたが、
WM_KEYUPのときはどうすればよいのでしょう?
0796デフォルトの名無しさん
2012/05/11(金) 18:27:53.500797783
2012/05/11(金) 19:32:53.90PostMessage()のWM_KEYDOWNメッセージで届いており、
十字キーの右を押したときは、lParamの拡張キーフラグが立っていました。
'a'や'b'では拡張キーフラグなしです。
0798783
2012/05/11(金) 19:43:01.19WM_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.770800デフォルトの名無しさん
2012/05/11(金) 20:22:52.320801783
2012/05/11(金) 20:30:22.56ちなみに、OSは64bit(Win7)でVCではWin32アプリを作る設定(のつもり)にしてるのですが関係ありますでしょうか?
電卓がおかしいだけで、SendMessage()で送っちゃっていいのでしょうか?
0802デフォルトの名無しさん
2012/05/11(金) 21:00:41.790803デフォルトの名無しさん
2012/05/11(金) 21:43:47.040804783
2012/05/11(金) 22:02:25.35sizeof(UINT)==4でした。
「lParam |= (stat<<31); 」の代わりに、
「lParam |= 0x80000000;」ならいけるかと思って試しましたが、
結果は同じでした・・・。
#ちなみにWM_KEYDOWNのとき用のlParamは、32ビット目が0固定なので、
#処理しなくていいと思って「lParam |= (stat<<31)」をコメントアウトしています。
0805783
2012/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.63static 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.070808デフォルトの名無しさん
2012/05/12(土) 00:34:36.64DEF_IMGなのにDEF_IMAGEとか。。
0809デフォルトの名無しさん
2012/05/12(土) 00:34:55.90static ImageStruct hogeButtonImage("hogeButtonImage.png");
0810デフォルトの名無しさん
2012/05/12(土) 12:46:05.550で初期化したいのですが、pointer(NULL)はできてもrect{0}はできないようですね。
素直にコンストラクタ内で、rect.top=0;・・・などと書かないといけないのでしょうか?
0811デフォルトの名無しさん
2012/05/12(土) 12:58:45.670812810
2012/05/12(土) 13:34:00.22RECTを拡張して
struct RECT_EX:public RECT{
RECT_EX(){ top = 0: ....};
};
のようなコンストラクタ付きにした場合、
キャストしてWindowsAPIのGetWindowRect()に渡すのは危険でしょうか?
RECTの配列を渡すなら絶対危険だと思うのですが、1つだけならよい??
0813デフォルトの名無しさん
2012/05/12(土) 13:48:27.83struct X{
X():a(a0){}
RECT a;
static RECT a0; };
static RECT X::a0={0};
0814デフォルトの名無しさん
2012/05/12(土) 18:54:09.56メンバ初期化子リストにrect()で0初期化できる
struct RECT
{
int x, y, w, h;
};
struct hoge
{
RECT rect;
hoge() : rect() {}
};
0815デフォルトの名無しさん
2012/05/12(土) 21:53:49.35terminate()呼ぶ前に情報出力したいのですが、できますか?
0816デフォルトの名無しさん
2012/05/12(土) 22:38:17.45自分では使ったことない、全部デバッガに押し付けてる
0817デフォルトの名無しさん
2012/05/12(土) 23:43:25.28のterminate_handlerと同じシグネチャの関数を作って
terminate_handler set_terminate(terminate_handler f) throw(); // 98
terminate_handler set_terminate(terminate_handler f) noexcept; // 11
で差し替えだな
set_terminateの返却値(前のハンドラ)を保存しといて新しいハンドラの最後で前のハンドラを呼び出すのが定番かな
0818815
2012/05/13(日) 02:00:53.36>>816
構造化例外(win専用?)と標準例外があるんですね。
>>817
visual c++ で以下の関数で渡したコールバックが呼ばれないっす。
std::set_unexpected()
std::set_terminate()
0819デフォルトの名無しさん
2012/05/13(日) 05:58:30.020820デフォルトの名無しさん
2012/05/13(日) 10:26:16.99> 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.99int data1,data2,data3;
このような変数から
data1==012
data2==3456789
data3==ABC
というように一部抽出して変数に格納したいのですがどうしたらいいでしょうか?
testの値は固定長ですが中身はrandomです.
0822片山博文MZボット ◆0lBZNi.Q7evd
2012/05/14(月) 12:44:59.260823デフォルトの名無しさん
2012/05/14(月) 13:29:05.93#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.54dataはintだぞw
0825デフォルトの名無しさん
2012/05/14(月) 15:36:23.560826 ◆qr00w3BQO6
2012/05/14(月) 18:18:58.550827デフォルトの名無しさん
2012/05/14(月) 18:22:19.14int data1,data2,data3;
scanf(test, "%3x%7x%3x", & data1, & data2, & data3);
0828デフォルトの名無しさん
2012/05/14(月) 18:29:17.620829 ◆qr00w3BQO6
2012/05/14(月) 21:45:27.50コピペして実行しましたが,ビルドは出来てsscanf()で止まってしまいます.
理由わかりますか? 構文的にはあってるみたいなんですが,,,
=は全角から半角に修正しました.
0830 ◆qr00w3BQO6
2012/05/14(月) 21:49:04.980831デフォルトの名無しさん
2012/05/14(月) 21:58:12.680832デフォルトの名無しさん
2012/05/14(月) 22:02:34.640833デフォルトの名無しさん
2012/05/15(火) 10:51:07.98loadMyString()はhogeの初期化のときだけ呼ばれるのでしょうか?
それともこの行を含んだメソッドが呼ばれるたびに呼び出す(=メモリリークする)のでしょうか?
static MyString* hoge = ReadFileBuffer("hoge.txt");
0834デフォルトの名無しさん
2012/05/15(火) 11:13:28.780835デフォルトの名無しさん
2012/05/15(火) 11:24:59.160836デフォルトの名無しさん
2012/05/15(火) 12:11:11.91マシンに近い言語だからこそ、挙動は実際にいくらでも確認できる
ReadFileBuffer() にデバッガをかけるもよし、
hoge がころころかわらないのを確認するもよし。
そうやって、体がCを覚えていく。
0837デフォルトの名無しさん
2012/05/15(火) 15:23:30.03実行環境: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.340839デフォルトの名無しさん
2012/05/15(火) 15:53:54.07文字列 488→int 0x488
0840デフォルトの名無しさん
2012/05/15(火) 16:00:07.020841デフォルトの名無しさん
2012/05/15(火) 16:00:22.620842デフォルトの名無しさん
2012/05/15(火) 16:12:53.21#include <io.h>
#include <fcntl.h>
略
_setmode(_fileno(stdout), _O_WTEXT);
wprintf(awcStr);
0843デフォルトの名無しさん
2012/05/15(火) 16:28:47.40圧倒的感謝・・・!
以下のソースにてコンソール出力、ファイルへのリダイレクトが正常に行われることを確認致しました
#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.650846デフォルトの名無しさん
2012/05/15(火) 17:30:22.14_setmode(_fileno(stdout), _O_U8TEXT);
0847デフォルトの名無しさん
2012/05/15(火) 19:10:03.40//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ソースを全部まるごと晴れ
問題はあんたが隠してるところにある
0849デフォルトの名無しさん
2012/05/15(火) 19:25:20.52>>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書き込め切れなかったので斧にあげました.
http://www1.axfc.net/uploader/Sc/so/345966.zip
pass 847
お願いします.
0852デフォルトの名無しさん
2012/05/15(火) 19:46:33.650853デフォルトの名無しさん
2012/05/15(火) 19:47:52.71char型配列に格納された16進数文字列から一部抜き出し,その値を計算することが目的です.
そのためにint等の配列に格納したいです.
>>850
すいません%dです 打ち間違えていました.
0854デフォルトの名無しさん
2012/05/15(火) 19:51:56.99こんな便利なサイトがあるんですね.
windows SDKがないので走らないですが...
http://codepad.org/s9STeC0Q
0855デフォルトの名無しさん
2012/05/15(火) 20:05:36.32自分で書いたC++コードのアセンブル結果を読んで自分で最適化できるようになりたいです。
(具体的には、キャストで何をしてるか、継承した時の関数テーブルがどうなってるか、
関数・メソッド呼び出しのコールスタックがどうなってるかなど)
分かりやすいサイトや、便利なツールなどあれば教えてください。
0856デフォルトの名無しさん
2012/05/15(火) 20:10:55.13#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.43C++コンパイラが吐いたx86とかx64のアセンブリを手で最適化?
アラインメントとかずれると速度が落ちるし(他のCPUではバスエラーを吐くのが多いからまだましだけど)
大きなソースで特にC++の演算子のオーバーロードを使って抽象化されてしまった機械語や
継承時のメモリ配置を手でいじるのか?
Inside the C++ Object Modelのような本はあるけど、読んでみればわかるけど8bitのZ80と
32/64bitのCPUじゃ桁が違うぞ
早晩発狂するかもな
0858デフォルトの名無しさん
2012/05/15(火) 20:15:19.91C++のコードを最適化すれ
0859デフォルトの名無しさん
2012/05/15(火) 20:16:32.61酷いソースだな
ソケット通信使ってるって最初に言えよ
UDP使うなよ 訳も分からずに使ってるんだろうけど
クライアントのソースどこよ
クライアントがおかしなデータ送ってるから分割できないんだろ
通信はTCPを使ったものに書き直せ
0860デフォルトの名無しさん
2012/05/15(火) 20:20:46.86念入りにC++コードを最適する。
C++ - Wikipedia
C++は、汎用プログラミング言語の一つである。
高度な機能を使用してもプログラムの実行性能が低下しすぎないように、言語仕様・ライブラリに様々な工夫が施されている。
0861デフォルトの名無しさん
2012/05/15(火) 20:33:24.34http://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.13ttp://codepad.org/j75dwTJT
質問の意図をできるだけ解釈し、ソースの要点を抜き出してみた
0864デフォルトの名無しさん
2012/05/15(火) 20:53:19.73蔵から送信されたデータが既におかしいから
0865デフォルトの名無しさん
2012/05/15(火) 21:10:39.80C++のコードを最適化する為にアセンブリ出力を読むのはお勧め。
但し、他でも言われているけどz80の知識だけではなんともならないと思う。
取り敢えず、アセンブリ出力を眺めてみたら?
0866デフォルトの名無しさん
2012/05/15(火) 21:25:45.73説明不足ですいません.
リアルタイム性を重視する計測機器の情報なのでUDPが使われています.これは仕様なのでTCPに変えられません.
クライアント側は計測結果をリトルエンディアンで特定のバイトに入れて送信しているので,
そのデータを抜き出してchar型から計算可能な(三角関数などを使います)int型に変換したいのです.
0867デフォルトの名無しさん
2012/05/15(火) 21:29:38.210868デフォルトの名無しさん
2012/05/15(火) 22:26:48.29リストってポインタが使えないと作れないデータ構造ですか?
0869855
2012/05/15(火) 22:32:06.47アセンブラを自分で修正するのではなくて、
「C++コードを書く→アセンブラを見てみる→
C++コードを修正してみる→アセンブラがどう変わったか見てみる」
というようなことをやりたいのです。
(頭では仮想関数テーブルやswitch文の最適化などイメージできてるつもりだけど、
実際には見ていないのに分かったつもりになってる。)
Z80ではSSEも出ないですから現状はぜんぜん別世界ですよね・・・。
今回のやりたいことにマッチする、参考になるサイトがあれば教えてください!
0870デフォルトの名無しさん
2012/05/15(火) 22:45:25.51だね
>>869
IDEを使うといいよ
0871デフォルトの名無しさん
2012/05/15(火) 22:48:18.50>865
0872デフォルトの名無しさん
2012/05/15(火) 23:07:45.65一応「値」と「次要素の添字」の組を一要素とした配列を使えば
擬似的なモノは出来なくもないが…それは擬似リストとでも呼ぶべきかもな
0873デフォルトの名無しさん
2012/05/15(火) 23:15:04.78逆汗使う(有償・無償のものがある)
デバッガ使う(有償・無償のものがあるが、ntsdで十分)
コンパイラにアセンブラのリスト出力をさせられるので、それを使う
3番目は一番近いようで難しい
ディレクティブがごちゃごちゃ入るので、ちょっと覗くにはしんどい
ptr/offset, mov/lea にきおつけろ
0874デフォルトの名無しさん
2012/05/15(火) 23:24:03.71データ構造としては普通にリスト構造といっていいんじゃないか
0875デフォルトの名無しさん
2012/05/15(火) 23:30:22.89だれかこのコードを簡略化というか最適化してください(´・ω・`)
一部分抜き出しただけで意味わからないだろうけど
if文が勿体無い(´・ω・`)
0876デフォルトの名無しさん
2012/05/15(火) 23:38:41.830877デフォルトの名無しさん
2012/05/15(火) 23:40:03.44double hoge = fabs((double)Angle - atn);
if( hoge >= PI/2) hoge = PI*2 - hoge;
0878デフォルトの名無しさん
2012/05/15(火) 23:41:42.86if(hoge >= PI/2){
hoge = PI*2 - hoge;
}
0879デフォルトの名無しさん
2012/05/16(水) 00:26:05.59thx
0880デフォルトの名無しさん
2012/05/16(水) 09:04:49.71http://getnews.jp/archives/212560
共立総合研究所が3月6日に発表した「韓流消費に関するアンケート」結果がインターネット上で関心を集めている。
調査によれば、日本の主婦の7割が「韓流好きではない」と回答しており、日韓両国のネット上では
「韓流ブームはメディアのステマ」などメディアを批判する声が上がった。
■日韓ネットユーザーは自国メディアを批判
日本のインターネット上ではアンケート結果を受けて、韓流ブームをあおったメディアを批判するコメントが殺到した。
「ステマ大失敗。またテレビのウソが明らかにw」
「世界中で大人気だったんじゃないのか?www」
「大金つぎ込んでステマ仕掛けたけども失敗した典型例」などと批判し、中には
「むしろ悪印象を根付かせる最悪の結果になったかなと」とメディアの韓流ごり押しが返って韓国の印象を悪くしたとの意見もあった。
また、調査結果は韓国メディア「マネートゥデイ」も報道。日本の韓流ブームが韓国で報じられているほど浸透していないことが分かると、
韓国のネットユーザーたちは自国メディアを批判するコメントを書き込んだ。
「正直、韓国の報道機関はみんな仮想ばかりだからね」
「歌を歌えばすぐにチャート1位。こんなのバブルでしょ。反省してほしい」
「韓流?そんなのは韓国メディアが作り上げたもの。日本のメディアは
取り上げないけど、今韓国では日流ブームが到来しているんだよ。街を見てくださいよ」
「私はヨーロッパ在住だけどこっちは日流。韓流より多い」
「正直言って韓流はメディアのやらせ」
「私も韓流なんて興味ない。みんな顔を作り直しているし」
「K-POPは一回性の音楽です」
「韓流の世界の認知度は、ポケットモンスターの足下にも及ばない」
「バブルってのは事実だと思う。韓国がIT以外に自慢できるものって何がある?」
「韓流ブームが過ぎ去る前に独島をなんとかしたい」
メディアのごり押しで嫌気がさしている人も多い。韓流ブームというバブルが弾けた後に、
日本国民全体に反韓感情だけが残るという事態にならなければいいが…。
0881デフォルトの名無しさん
2012/05/16(水) 12:02:22.750882デフォルトの名無しさん
2012/05/16(水) 23:25:04.69#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書いた方がいいんじゃないのか
他のファイルからupdate()を参照しようとするとリンカエラーになるんだろ?
0884デフォルトの名無しさん
2012/05/17(木) 00:15:09.80テンプレートって基本ファイル分割できないんですね…
参照しなくてもダメでした
cppファイルをincludeして無理やり解決しました
ありがとうございます
0885uy
2012/05/17(木) 14:49:47.79そこで何年も止まるのだろう
0886デフォルトの名無しさん
2012/05/17(木) 14:57:16.340887デフォルトの名無しさん
2012/05/17(木) 16:07:09.98仕事に使ってないから
趣味程度ではなかなか上達しないよ
でもあるレベルを超えると急に理解度が増すという事はある
0888デフォルトの名無しさん
2012/05/17(木) 17:17:06.90いってること本質的におんなじだとおもうけど、
「C/C++でもやるか」ではじめる奴って、実際に何か実装する動機が弱いんだと思う
趣味ででも何か作ろうってなると、伸びる
0889デフォルトの名無しさん
2012/05/17(木) 18:14:35.440890デフォルトの名無しさん
2012/05/24(木) 10:10:45.20ライセンスの表記ってどこで出せばいいんでしょうか?
ソースの中?
ヘルプの中?
0891デフォルトの名無しさん
2012/05/24(木) 12:17:35.230892デフォルトの名無しさん
2012/05/24(木) 13:09:07.24そのソフトウェアの配布ページにでも書いておけばいいよ
0893デフォルトの名無しさん
2012/05/24(木) 16:47:28.120894デフォルトの名無しさん
2012/05/26(土) 22:23:34.13ちなみにQTやろうと思ってるんだけど
0895894
2012/05/26(土) 22:24:37.49http://toro.2ch.net/test/read.cgi/tech/1337067149/
0896デフォルトの名無しさん
2012/05/27(日) 06:27:36.05という処理なのですが、
これって、ロックファイル(_PATH_LOCKFILE)がすでに有った場合は、
openに失敗しますか?
0897デフォルトの名無しさん
2012/05/27(日) 06:31:29.880898デフォルトの名無しさん
2012/05/27(日) 06:33:12.680899デフォルトの名無しさん
2012/05/27(日) 06:56:42.250900デフォルトの名無しさん
2012/05/27(日) 07:24:50.950901デフォルトの名無しさん
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.580904デフォルトの名無しさん
2012/05/27(日) 10:13:46.82ちゃんとシグナル処理は書いてありました...
0905デフォルトの名無しさん
2012/06/01(金) 05:35:16.380906デフォルトの名無しさん
2012/06/01(金) 06:11:17.030907デフォルトの名無しさん
2012/06/01(金) 08:52:27.44本体はプリコンパイルヘッダ使わない(強制してみたが、使えなかった)から、すごく遅い
そして最後に、リリースビルドはリンクが/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.420910デフォルトの名無しさん
2012/06/04(月) 21:31:09.06testの(int g_i,int 〜)の所でg_i,g_jがローカル変数として宣言されてしまって
その関数の中ではグローバル変数として扱えなくなっているということですか?
0911デフォルトの名無しさん
2012/06/04(月) 22:34:37.54グローバル変数として扱えなくなっているというより
そもそもグローバル変数でない別のものにアクセスしちゃう形
変数名を書かれたとき、コンパイラはスコープの近いものから順に探すので
近いところにg_iやg_j(これらはグローバルのg_iやg_jとは別の変数)を見付けた時点で「ああこれね」となり
グローバル変数があるかどうかなんて別に気にも留めないままコンパイルすることになる
そんなワケでローカルのg_iやg_jに値を代入し、それは使われないまま捨てられる
…てな感じで考えたほうがいいかな
0912デフォルトの名無しさん
2012/06/04(月) 22:41:14.97ほう。
わかりやすく説明してくださってありがとうございました
たすかりました!
0913デフォルトの名無しさん
2012/06/04(月) 23:07:41.300914デフォルトの名無しさん
2012/06/05(火) 08:40:51.91こうすれば、実行結果は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.68class 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.05void update(Charactor * other)にしてmy->update(enemy)とかすればother->Posxで取得できる
0917デフォルトの名無しさん
2012/06/08(金) 01:01:01.06返答ありがとうございます!
ということはさらにCharactor* bossをnewしたりすると
引数はもっと増えていってしまうのですね
0918デフォルトの名無しさん
2012/06/08(金) 01:27:51.48> ということはさらにCharactor* bossをnewしたりすると
> 引数はもっと増えていってしまうのですね
一つずつ渡していくならそうなる
void update(vector<Charactor*> const & v)とかにしてまとめて渡すようにすれば直接の引数は一つだけのままにできる
0919デフォルトの名無しさん
2012/06/08(金) 01:41:57.19まとめる方法もあったんですね
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ちなみにメンバは「x y z」な
0922デフォルトの名無しさん
2012/06/09(土) 02:17:49.68規格ではエラーにはならないから合法
…ってそういうことを聞きたいんじゃないよなw
コンストラクタの中で宣言した引数やローカル変数の名前は
その外のスコープの名前(クラスのメンバ変数の名前も含む)を隠蔽する
ttp://codepad.org/92RJuiOS
引数の名前で隠蔽した場合は注意が必要 ↑の例だとh.yの値はh.xの3倍ではないぞ
0923デフォルトの名無しさん
2012/06/10(日) 08:28:14.42size_t foo(int size)
{
int array[size];
return sizeof(array);
}
単にコンパイル時にsize*sizeof(int)相当のコードに置きかえているのでしょうか。
0924デフォルトの名無しさん
2012/06/10(日) 08:52:19.59C99の規格書に当たったわけではないからその点割り引いて聞いて欲しいが、
C99の可変長配列は関数の引数としても渡せるから、
配列自体にサイズ情報が保持されている必要があり、
コンパイル時にsize*sizeof(int)相当のコードに置きかえるという>923方式一辺倒では破綻する
(※ >923のような他の関数に渡さない特定の場合に最適化によってそのようなコードが生成されることは考えられる)
可変長配列をスタック上にしか取れない(自動変数としてのみ可能)という制限から察するに、
alloca()と同じような内部メカニズムなのではないか
0925デフォルトの名無しさん
2012/06/10(日) 09:50:27.40あーそうらしいね
規格票を "variable length array" で検索してみると分かるけど、多次元配列を
動的に確保出来るのと、sizeof演算子が適用出来るという点は素晴らしいと思う
多次元配列ならalloca()の構文糖と解釈する事も出来るが、sizeofが使えると
なると俄然意味合いが違ってくる
ただし他の型とsizeof演算子の内部メカニズムが異なるらしく、他の固定型はコンパイル
時にサイズが決定しているが、variable length arrayは実行時にサイズを評価している
コンパウンドリテラルの中にvariable length arrayがあるような場合も同じ
0926デフォルトの名無しさん
2012/06/10(日) 19:46:27.650927デフォルトの名無しさん
2012/06/10(日) 20:23:56.19呼び出す度に異なるサイズの可変長配列を確保するような場合じゃね
0928デフォルトの名無しさん
2012/06/11(月) 02:51:37.41#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そのソースどおりならEMemberMaxExceptionの返却値型がなくメンバ関数の定義になってないから
0930デフォルトの名無しさん
2012/06/11(月) 11:11:46.78ごめんなさいよく見たらコンストラクタ名直すの忘れてました…
ええと、本来ならクラス名と同じ名前なんです…
0931デフォルトの名無しさん
2012/06/11(月) 21:39:04.71exceptionにはconst char *をとるコンストラクタはない
そのため
exception(msg);
は一時変数の生成でなく
exception msg;
という変数宣言と解釈されるから
参考 ttp://codepad.org/aDURxBwF 変数の宣言時に変数名は括弧で囲える
0932デフォルトの名無しさん
2012/06/11(月) 22:43:22.25EMemberMaxException(const char *msg)
:std::exception(msg){
}
0933デフォルトの名無しさん
2012/06/11(月) 23:13:30.44コンストラクタは関係ない
宣言と解釈できるものは宣言と解釈するルールのせい
まあ>>928がやりたかったのは>>932だろうな
0934933
2012/06/11(月) 23:37:34.32> exceptionにはconst char *をとるコンストラクタはない
は正しいのでコンパイルエラーになるのは変わらない
0935デフォルトの名無しさん
2012/06/12(火) 08:09:16.96ありがとうございます
C++の場合、コンストラクタの継承ってこう書くんですね…
変数宣言が括弧で括れることも知らなかったです、併せて覚えておきます
0936デフォルトの名無しさん
2012/06/12(火) 16:32:28.78class A;
class A::B; <- コンパイルエラー
0937デフォルトの名無しさん
2012/06/12(火) 23:57:10.010938デフォルトの名無しさん
2012/06/12(火) 23:58:20.27のとき、C++風にfoo( void )なのと、C風にfoo( ... )なののどっちに解釈されるの?
0939デフォルトの名無しさん
2012/06/13(水) 08:42:54.16無理かあ
んじゃ名前空間でも作ってそこに両方置いてみる、ありがと
0940デフォルトの名無しさん
2012/06/13(水) 12:46:35.22class A{};
template class B<A>;
extern "C"は構文をC++からCにするという意味ではない。
0941デフォルトの名無しさん
2012/06/17(日) 10:34:55.60大文字のみの略語が含まれる場合どうするべきなのですか
例: EUCEncoding v.s. EucEncoding
また、どっちにせよ大文字のみの略語が来ると
アッパーキャメルケース (UCC)(またはパスカルキャメルケース)をクラス名に使い、
ローワーキャメルケース (LCC)をメンバやインスタンスの名前に使うという使い分けをしたい場合
区別がつかなくなると思うのですがソフトウェア工学的にはどうするのが正しいのですか
0942941
2012/06/17(日) 10:38:20.37[スレ立てるまでもない質問はここで 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.06C++であるシステムを作ろうとした時、
メインのソースファイル(main.cpp)があって、ヘッダーファイル(main.h)に
インクルードや定数の定義、宣言などをすると思うんですが
例えば、このヘッダーファイル(main.h)がインクルードするヘッダーファイル郡に
全ての処理が記述されていて(そのヘッダーファイル郡がさらに新たなインクルードをするなどで)、
メインのソースファイル(main.c)では、極端に言えば「関数を1つ呼び出すだけでOK」
という状態が、オブジェクト指向というものの理想なのでしょうか?
まだまだ初心者でいろいろと練習していきたいのですが
そういったところを意識して丁寧にやっていくか、ただがむしゃらに数をこなしていこうかどうかという方針が定まらないです
0946デフォルトの名無しさん
2012/06/17(日) 17:07:13.86main() 自体は数行ってことはあるよ
OOPのひとつの書き方として、実装のあらかたがクラス定義におさまる書き方はある。
0947デフォルトの名無しさん
2012/06/17(日) 17:18:59.18知らんが、オブジェクト指向は関数型言語的性格(オブジェクトを生成するだけで変えない)と、
命令言語型的性格(生成したオブジェクトの状態を変える(破壊的代入))のミックスしたもので
数学的モデルが定まっていない
ゆえに、系の原始オブジェクトが何であるべきか、について統一した見解など今のところ無い
【派閥1】一般的に言って、モデルとビューとコントロールは分けたほうがあとあと使い勝手が良いし、
問題の適度な一般化をも意味するから分けて考えることでかえって設計しやすい
ということはこれら3オブジェクトの生成ぐらいはmain()にあっても良いんジャマイカ、
(これらの生成を1つのクラス内で行うか、main()の中で行うかは本質的な違いとは言えない
【派閥2】普通UIはプログラム1本につき1つだから、プログラムを特徴付けるオブジェクトとして
main()ではビューに相当するオブジェクトを1個生成し、ビューのコンストラクタかLoad()イベントで
モデルとコントロールを生成さす
【派閥3】まずコントロールを(以下略
0948デフォルトの名無しさん
2012/06/17(日) 21:50:37.76main関数なんてほとんどからっぷでもいいレベル。
0949デフォルトの名無しさん
2012/06/17(日) 22:37:56.71ありがとうございます。
これだけ自由度の高い分野だと「コレ」と決めてしまうことによる弊害の方が多いのでしょうね
コーディング規約などにおいてもガッチリ決まってるモノもないようなので
今はとにかくクラスの概念に慣れることに専念しようと思います
0950デフォルトの名無しさん
2012/06/18(月) 00:20:21.67クラスの設計はいろいろで、性格というか考え方が現れる
ソースを見せるのが恥ずかしい原因の一つでもある
0951デフォルトの名無しさん
2012/06/18(月) 23:38:09.83ソースに愚痴を書く奴がいたっけw
0952デフォルトの名無しさん
2012/06/18(月) 23:59:32.460953デフォルトの名無しさん
2012/06/20(水) 06:41:49.04mainをほぼ空にするのは個人的にナンセンスだと思うな。
アプリケーション固有の動作なんて、main関数内にできるだけ
納めておいたほうがいいし、クラスを作るより先に、オブジェクトを
組み合わせて新しい動作を定義するよう心がけたほうがいいと思う。
トップレベルのウィンドウなんかは他で共有しないんだから
main(WinMain)の中で構築したって困らないし。
0954uy
2012/06/20(水) 06:54:43.40お前らのような下級ゴミカスとは格が違う
0955デフォルトの名無しさん
2012/06/20(水) 08:08:28.99CUIとしても動作させる可能性があったり、他のプログラムからの起動もあったりするから、
main()の中が見通しがいい方が融通は利くよ。
まぁ、そういうプログラミングをしないのならナンセンスに思えるのは判るけどね。
0956デフォルトの名無しさん
2012/06/20(水) 22:03:23.02沢山の関数に分離したり、クラスにしたりとやり方は様々だけど
main()に限らず一関数に長々突っ込むのだけは流石にマズいと思うよ
0957デフォルトの名無しさん
2012/06/27(水) 17:31:42.44プログラムの開発でC++でなく純粋なCで書くメリットってある?
0958デフォルトの名無しさん
2012/06/27(水) 17:43:39.020959デフォルトの名無しさん
2012/06/27(水) 18:06:03.51ではC++固有の機能を使わない、C言語の規格に則ったプログラム開発と訂正しておく。
最近C++始めたんだが、その高機能な言語仕様の前にCの存在価値がほぼ無いように感じる。
組み込み系とかは別だが。
0960デフォルトの名無しさん
2012/06/27(水) 18:12:21.990961デフォルトの名無しさん
2012/06/27(水) 18:17:34.560962デフォルトの名無しさん
2012/06/27(水) 18:53:50.58例えばmainがほぼ空でも
Cだと24KB
C++だと500KB
0963デフォルトの名無しさん
2012/06/27(水) 21:49:52.620964デフォルトの名無しさん
2012/06/28(木) 20:34:06.37まぁ、大抵C++で書いているね。
0965デフォルトの名無しさん
2012/06/28(木) 21:15:28.88なので、新しいプラットフォームによく移る場合は、
Cで資産蓄えることになるわな。
携帯電話のドライバーまわりやら、HPC、ネットワーク機器関連とかは
Cが多いだろ。突っ込まれる前に書くがHPCに関しては、C++に比べればという話で
FORTRANの方が圧倒的に需要がある。
0966デフォルトの名無しさん
2012/07/08(日) 07:31:30.81for(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そうだとすると、\tが効果を発揮するように組めよ
てかもっとlabel1のほうのヒントよこせ
0968デフォルトの名無しさん
2012/07/08(日) 11:42:53.95char 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.580970デフォルトの名無しさん
2012/07/08(日) 14:39:52.44DLLを作るんですか?
0971デフォルトの名無しさん
2012/07/08(日) 16:32:45.880972デフォルトの名無しさん
2012/07/08(日) 23:33:12.26なぜCでもないのにlabel.SetText();
じゃないのかイラッとするな
>>970
gcc Cのソース.c Fortranのソース.f
この時、Fortran側に外部関数の呼び出し書いとけば行ける
0973デフォルトの名無しさん
2012/07/09(月) 16:42:42.10Visual C++なんだけど
0974デフォルトの名無しさん
2012/07/09(月) 19:09:10.030975デフォルトの名無しさん
2012/07/09(月) 20:08:17.490976デフォルトの名無しさん
2012/07/09(月) 20:09:35.530977デフォルトの名無しさん
2012/07/09(月) 21:33:30.89VIsual C++じゃなくて、MFCの問題だろ
ATLやら他のライブラリ使ってみろよ
0978デフォルトの名無しさん
2012/07/09(月) 22:36:43.5801 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.990980デフォルトの名無しさん
2012/07/09(月) 23:02:08.57おー、そうだw
0981デフォルトの名無しさん
2012/07/10(火) 00:46:07.61なんで>968じゃいかんの?
C++はじめて一週間かどうかよりも、日本語をもう少し何とかしてくれないと。
少なくとも、他人に判るように説明する訓練くらいはしておいてくれ。
0982デフォルトの名無しさん
2012/07/10(火) 06:45:02.61>>968は4次魔方陣 じゃないだろ
>>978の下の図が4次魔方陣だし
>>966で4次魔方陣に必要な対角線上の入れ替えを行ってる
お前日本語分からんのか?
4次魔方陣も知らんのだろ
0983デフォルトの名無しさん
2012/07/10(火) 07:35:30.98コメントくらい書けゴミカス
0984デフォルトの名無しさん
2012/07/10(火) 08:21:29.87いやだから、魔方陣の表示は>968でいいんじゃねぇかと。
応用できないの? 馬鹿なの?
0985デフォルトの名無しさん
2012/07/10(火) 09:12:06.12↓
こんな風に表示したい
↓
そのやり方でいいじゃん
↓
それは4次魔方陣じゃねーよ
ライブラリが…ってレベルじゃないよね
0986デフォルトの名無しさん
2012/07/10(火) 12:54:42.24ゴミカスはさっさと消えろ
0987デフォルトの名無しさん
2012/07/10(火) 15:25:43.46凄い面倒な言い回しだったり、
重要な部分をさらっと書いて終わってたり・・・。
内容は濃いのかもしれんが著者の文が突っ走りだったり図が大変理解しがたく、
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.630992デフォルトの名無しさん
2012/07/10(火) 17:40:52.970993デフォルトの名無しさん
2012/07/10(火) 17:54:12.570994デフォルトの名無しさん
2012/07/10(火) 17:55:44.67∧( ´∀`)< あげ
( ⊂ ⊃ \____
( つ ノ ノ
|(__)_)
(__)_)
0995デフォルトの名無しさん
2012/07/10(火) 18:08:25.20今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ age
(・∀・∩)(∩・∀・) age
(つ 丿 ( ⊂) age
( ヽノ ヽ/ ) age
し(_) (_)J
0996デフォルトの名無しさん
2012/07/10(火) 18:09:00.95人目につかないようにsageてあげるよ!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ sage
(・∀・ ) ( ・∀・) sage
/ \ / \ sage
⊂( ヽノ つ ⊂ヽ/ ) つ sage
し(_) (_)J
0997デフォルトの名無しさん
2012/07/10(火) 18:13:34.89グルグルじゃねーぞ(笑)
0998デフォルトの名無しさん
2012/07/10(火) 18:36:34.590999デフォルトの名無しさん
2012/07/10(火) 18:37:46.561000デフォルトの名無しさん
2012/07/10(火) 18:38:41.2610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。