【初心者歓迎】C/C++室 Ver.78【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/03/16(金) 19:44:28.87ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.77【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1323692486/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0002デフォルトの名無しさん
2012/03/16(金) 20:36:37.680003デフォルトの名無しさん
2012/03/17(土) 16:58:26.650004デフォルトの名無しさん
2012/03/17(土) 18:17:19.150005デフォルトの名無しさん
2012/03/17(土) 18:20:35.690006デフォルトの名無しさん
2012/03/17(土) 19:13:40.72それ以外に道がない
0007デフォルトの名無しさん
2012/03/17(土) 19:37:23.13上位レイヤーなら
Ogre, Unreal Engine, Irrlichtとか
0008デフォルトの名無しさん
2012/03/17(土) 19:38:04.45で、もし言語にこだわらずゲームが作りたいだけならUnityおすすめ
0009デフォルトの名無しさん
2012/03/17(土) 23:30:50.56directxはよく見ますがそれ以外は聞いたことがないのばかりです
色々面白そうなのでかまってみます
0010デフォルトの名無しさん
2012/03/19(月) 00:23:10.50classのメンバ関数のconst参照、演算子の多重定義、テンプレート
Cってすごくシンプルでいい言語だったな・・・
0011デフォルトの名無しさん
2012/03/19(月) 00:56:40.78やりたい事を実行するのに必須のもんだったら別に怖いって事は無いだろうけどな。
選択権が無いのなら、お気の毒。
0012デフォルトの名無しさん
2012/03/19(月) 01:02:12.25もちろん選択権ありありで、好きでそんなC++やってるよ
0013デフォルトの名無しさん
2012/03/19(月) 14:47:06.48インスタンスをグローバル領域で生成すればスタックには格納されないよね?
謎のスタックオーバーフローで悩まされている・・・
0014デフォルトの名無しさん
2012/03/19(月) 14:52:55.240016llu
2012/03/21(水) 00:38:16.24大袈裟だな。
アスキーキャラクタ 1〜10文字のすべての組み合わせ試したのか?
0017デフォルトの名無しさん
2012/03/21(水) 00:38:24.29ちゃんと俺にもモリタポ払うんだろうな?
0018デフォルトの名無しさん
2012/03/21(水) 01:00:32.29グローバル変数の初期化順番について質問があります。
test1.cpp
---------------------------
std::string a("test1");
test2.cpp
---------------------------
std::string b(a);
両方の変数がグローバル変数だったとして、この場合bの文字列が"test1"になるかは不明ですよね
で、次の場合でも文字列bが確実に"test1"になってはくれないのでしょうか?
test1.cpp
---------------------------
const std::string &testinit(){
static std::string a("test1");
return a;
}
test2.cpp
---------------------------
b(testinit());
よろしくお願いします。
0019デフォルトの名無しさん
2012/03/21(水) 01:01:42.850020デフォルトの名無しさん
2012/03/21(水) 01:13:32.11なりますか。
でもなんか変な感じがします。
最初のやつもbが"test1"になることを保証してもいい気がするんですが
0022デフォルトの名無しさん
2012/03/21(水) 06:40:59.83たまにC#使うとコンパイルの速さにビビる。
0023デフォルトの名無しさん
2012/03/21(水) 07:45:04.570024デフォルトの名無しさん
2012/03/21(水) 08:58:40.76お前最低な性格だな
0025デフォルトの名無しさん
2012/03/21(水) 09:41:07.25その馬鹿の性格なんてどうでもいい。
0026デフォルトの名無しさん
2012/03/21(水) 10:30:50.38その言葉、当方には最大の賛辞と解釈します。なにせ、http://en.wikipedia.org/wiki/Doublethink こそ最高のありかたと考え日々実践していますので。
0028デフォルトの名無しさん
2012/03/21(水) 19:58:23.600029デフォルトの名無しさん
2012/03/21(水) 21:15:55.03なんか勘違いしてるな。哲学の無い矛盾はただのアホだぞ
0030デフォルトの名無しさん
2012/03/21(水) 23:44:01.920031デフォルトの名無しさん
2012/03/22(木) 07:13:18.34テキストエディタなどは
文字の量などでメモリのサイズが可変的だとおもうのですが
こういうのはあらかじめある程度の領域を確保して
必要になるとまたある程度の領域を追加で確保するという形をとっているのでしょうか?
またその中で消したりなどをした際には配列を手前へとずらしているのでしょうか?
0032デフォルトの名無しさん
2012/03/22(木) 09:11:38.31プログラミング作法を読むといいよ。
まぁ、行単位か頁単位でリンクトリストするとかstd::deque辺りを使っていると思う。
0033デフォルトの名無しさん
2012/03/22(木) 09:12:25.470034デフォルトの名無しさん
2012/03/22(木) 10:14:56.340035デフォルトの名無しさん
2012/03/23(金) 10:47:17.89以下のようにAのインスタンスを動的に作成した場合は、Aのメンバ変数のBインスタンスもヒープ領域に確保されるということでよいですか?
class A{
B b;
};
class B{
int nHoge;
};
A a = new A;
0036デフォルトの名無しさん
2012/03/23(金) 11:04:45.200037デフォルトの名無しさん
2012/03/24(土) 08:05:41.49サイト見ながら素数判定のプログラムを書いたので
実行したいのですが、どこから実行するかどなたか教えてください
0038デフォルトの名無しさん
2012/03/24(土) 10:35:53.39まずはそれの名前を書け
持っていないなら、それらをインストールしろ。
常用にはすすめられないが↓みたいなものある
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0039デフォルトの名無しさん
2012/03/24(土) 12:18:04.67コンパイルの仕方についての質問ですが、、このスレでよいでしょうか?
0040デフォルトの名無しさん
2012/03/24(土) 12:47:15.460041デフォルトの名無しさん
2012/03/25(日) 00:50:40.96例えばvector A, Bの全要素に対してplus関数オブジェクトを適用すればA[i] += B[i]してくれるようなもの。
0042デフォルトの名無しさん
2012/03/25(日) 00:54:11.550043デフォルトの名無しさん
2012/03/25(日) 00:59:51.630044デフォルトの名無しさん
2012/03/25(日) 01:01:25.780045デフォルトの名無しさん
2012/03/25(日) 01:15:00.780046デフォルトの名無しさん
2012/03/25(日) 01:35:14.86できるだろ
ttp://codepad.org/xpZIG0uX
0047デフォルトの名無しさん
2012/03/25(日) 01:42:34.17よく見たらbinary_function継承したクラスにコンパイルエラーが出てて
実行されてたのは修正前の古いexeでした。
0048デフォルトの名無しさん
2012/03/25(日) 19:22:51.09int型の配列を実現するクラスIntArrayがあり
C++で自己初期化(IntArray x = x)を抑制するコピーコンストラクタを作ろうとしました
自己初期化の問題は、左辺のIntArray xの宣言子よりxは生成されるので
右辺のxはコンパイルエラーにならないが、この右辺xは未初期化(デフォルトコンストラクタにもかからない)なので
結果としてxのメンバが不定値で設定されてしまうことにあるということです
IntArray x=x;はダメだが、
IntArray t;// default constructor
x=t; //IntArray::operator=が定義済み。
にするとうまくいく。そこで、下のようにコピーコンストラクタを定義しました
IntArray::IntArray(const IntArray& x){
if(&x != this){ /*自己初期化ではない*/
nelem = x.nelem;
vec = new int[nelem];
for(int i=0;i<nelem;i++)
vec[i] = x.vec[i];
}
else{
std::cout << "※自己初期化が行われています。\n";
IntArray t;
*this = t;
}
}
するとコンパイルエラーは出ないものの実行すると
*** glibc detected *** ./a.out: free(): invalid pointer: 0xb763bff4 ***
となり、どこかでメモリの開放がうまくできていないのかプログラムが強制終了してしまいます。
前後左右でチェックして明らかに*this = t;に問題があります。
~IntArray() { delete[] vec; }がデストラクタです。
コードの中にどこか問題のある記述ありますでしょうか?
004948
2012/03/25(日) 19:34:53.85下のようにやるとうまくいきました(単純に考えうることなのに頭が回ってませんでした)
IntArray::IntArray(const IntArray& x){
if(&x != this){
・・・・
}
else{
std::cout << "自己初期化が行われています。\n";
IntArray t;
nelem = t.nelem;
vec = new int[nelem];
for(int i=0;i<nelem;i++)
vec[i] = t.vec[i];
}
}
原因が下のoperator=の自己代入抑制のコード中のdeleteで、既存の配列を開放するため
>>48のコピーコンストラクタ中のthis->vecが不定値の状態でdeleteを行っているからでした。
IntArray t; Int Array x = t が許されたのは、コピーコンストラクタが呼び出されているからなのですね。
if(this != &x){
if(nelem != x.nelem){
delete[] vec;
nelem=x.nelem;
vec = new int[nelem];
}
for(int i=0;i<nelem;i++)
vec[i] = x.vec[i];
}
お騒がせして勝手に自己解決してすいませんでした
0050デフォルトの名無しさん
2012/03/25(日) 19:35:24.20そのクラス、コピー代入演算子やデストラクタも定義されてるんだよね?
コピー代入演算子の実装は初期化済みのオブジェクトを期待してるだろうから、
ら未初期化のオブジェクトに対して代入しちゃマズイでしょう。
0052デフォルトの名無しさん
2012/03/25(日) 19:38:54.60にしても自己初期化に何かしらの動作を与えても呼び出しもとのバグであることに
変わりはないだろうから、心配するとしても assert() ぐらいでいいと思うぜ。
0053デフォルトの名無しさん
2012/03/25(日) 19:43:15.84眼から鱗ですね。確かにその通りです
0054デフォルトの名無しさん
2012/03/25(日) 23:37:39.03そろそろGUIなプログラムを作ってみたいのですが、次は何を理解すればよいのでしょうか?
0055デフォルトの名無しさん
2012/03/25(日) 23:48:43.74独習C++
0056デフォルトの名無しさん
2012/03/26(月) 00:04:15.47プラットフォームや見た目、使い勝手などから、
目的に合いそうなGUIツールキットを探す
0057デフォルトの名無しさん
2012/03/26(月) 03:50:29.170058デフォルトの名無しさん
2012/03/26(月) 04:37:34.80C++の既存のWin32ライブラリ、例えばMFCとかATL/WTLは
BOOL型とbool型が混在しているが、メソッドの戻り値の型を例に取ると
どういう場合はBOOL型にし、またはbool型にすべきなのだろう?
0059デフォルトの名無しさん
2012/03/26(月) 04:55:41.62自分で作るならbool、APIの戻り値をそのまま戻すなら(必要に応じて)BOOL。
ちなみに、Win32APIのBOOLは二値じゃない。
0060デフォルトの名無しさん
2012/03/26(月) 05:49:34.50MFCなどはAPIとの整合性を重視してBOOLを使うのだろうか?
C++のライブラリであるなら言語仕様にあるboolを使うべきと思うのだが、
boolを使うデメリットがあるのでしょうか?
シリアル化の場面ぐらいしか思い浮かばないが…
0061デフォルトの名無しさん
2012/03/26(月) 07:21:25.04GetMessageという関数があって、こいつはBOOL型を返すくせに、
-1、0、それ以外の値の3種類がある
そういう特別な例外だけ気にしておけば bool で構わないと思う
0062デフォルトの名無しさん
2012/03/26(月) 10:13:39.23それからエラー処理でも何でもすればいいんだお
0063デフォルトの名無しさん
2012/03/26(月) 11:00:52.230064デフォルトの名無しさん
2012/03/26(月) 11:58:50.71BOOLはint
0065デフォルトの名無しさん
2012/03/26(月) 12:01:48.56実用上ではboolでキャストしても問題ないとかじゃなくて、
むしろリファレンスにboolで受けるなよ!絶対だぞ!って書かれてるのか(´・ω・`)
0066デフォルトの名無しさん
2012/03/26(月) 13:22:12.48うは、BOOLとBOOLEANで型が違うw
0067デフォルトの名無しさん
2012/03/27(火) 01:19:38.40を作成したいのですが、どうするのが手っ取り早いでしょうか?
[フォーマット]
┌───────┬─────┬─────┬─────┬─────┐
|2進数桁数(N桁)│ 値A │ 値B │ 値C │ 値D │
└───────┴─────┴─────┴─────┴─────┘
└ 5 bit ┘└ N bit ┘└ N bit ┘└ N bit ┘└ N bit ┘
フォーマットの先頭にある5ビットで2進数表現の桁数が格納されており、
その後に続く値(符号付)が、桁数に従い2進数で格納されております。
例えば、
桁数:6桁
値A :0
値B :20
値C :0
値D :20
の場合、
00110 000000 010100 000000 010100 になります。
これを先頭から8ビットずつとって(8ビットにならに場合0パディング)、
バイナリに変換して、
0x30 0x0A 0x00 0xA0
というような感じにしたい。
どういうロジックにするのが簡単なのでしょうか?
0068デフォルトの名無しさん
2012/03/27(火) 02:14:14.28ビットフィールドでググれ
0069デフォルトの名無しさん
2012/03/27(火) 02:35:43.19operatorとか使うのがよく判らないなら、Read/Write用のメンバ関数を用意してもいいし。
bit幅が64bitを超える場合はちょっと面倒になりそうではあるが。
0070デフォルトの名無しさん
2012/03/27(火) 08:18:18.66ビット長が5ビットで表現されているんだから64bitを超えるわけないだろ。JK
>>67
で、Nが0だったらどうなんの? Nが8を超えたときも2-4バイトにパディングしていいの?
0071デフォルトの名無しさん
2012/03/27(火) 08:20:03.12>>67
パディングは最後だけってことね。
>>69
総ビット長が64bitを越えるってことか? だとしても、なんで面倒になるんだ?
0072デフォルトの名無しさん
2012/03/27(火) 14:06:49.35横からだけど適当に作ってみた
http://codepad.org/HyDOJc5n
0073デフォルトの名無しさん
2012/03/27(火) 23:45:00.45返事遅くなり申し訳ございませn。
レスありがとうございました。
>>68
ビットフィールドを調べました。
確かに便利だと思いましたが、ビット長が可変なので
使えないのかと思いました。
>>72
サンプルありがとうございます。
こんなに少ないロジックでできるんですね。
ただ、理解があまり出来ておりません
・数個ある条件式の意味
・変数maskが何故こうしてやればいいのか。
※ヘタレですません。
自分は必死こいて、ビットシフトやら、ビットマスクなどを
駆使してベタベタにコード書いてやっとできたんですけど、
72さんのサンプルを参考につくり治したいと思います。
0074デフォルトの名無しさん
2012/03/28(水) 09:02:31.82GetCurrentProcessorNumberで自分のスレッドのCPU番号は調べられますが
他のスレッドのCPU番号はどうすればよいですか?
対象のスレッドは自分のコードではありません。
できればXPでも実現できる方法が知りたいです。
0075デフォルトの名無しさん
2012/03/28(水) 09:04:33.89アセンブラ使えばできるらしい
0076デフォルトの名無しさん
2012/03/28(水) 12:37:20.36他のスレッドからそれを実行しても意味がないと思うのです。
0077デフォルトの名無しさん
2012/03/28(水) 14:05:41.140078デフォルトの名無しさん
2012/03/28(水) 14:10:32.52http://ideone.com/LtgS7
0079営利利用に関するLR審議中@詳細は自治スレへ
2012/03/29(木) 13:02:41.54制限付でsetjmp()/longjmp
0081営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:26:51.70ヘッダファイルの定義はいったいどう記述すればいいのですかね
一度だけコンパイラに参照されると片方でしか定義されないことになってしまってエラーになる
ヘッダだけでvoid*型にしてcppファイルで形指定して参照するくらいしか思い浮かばないけどダサすぎる
0082営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:29:47.58008381
2012/03/31(土) 00:50:38.47関数のスクリプトも全部hファイルに記述しようとしてるんだけど
名前を入れるだけではnewの部分で形が認識できないとエラーになる
0084営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:52:47.840085営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 01:04:26.86エラーの出る最小コードとか作れない?
0086片山博文MZボット ◆0lBZNi.Q7evd
2012/03/31(土) 14:18:41.390087片山博文MZボット ◆0lBZNi.Q7evd
2012/03/31(土) 14:19:49.580088片山博文MZボット ◆0lBZNi.Q7evd
2012/03/31(土) 14:24:24.01class HOGE2;
class HOGE1 { ... HOGE2* getHoge2(); ... };
class HOGE2 { ... HOGE1* getHoge1(); ... };
inline HOGE2* HOGE1::getHoge2() { return new HOGE2; }
0089営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:06:16.23両方のクラスはそのインターフェイスを継承して作るのがいいんじゃないかと思うがどうか
0090営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:48:24.66これが障害となりboost::rangeにおけるemptyメンバやsizeメンバが使用できません。
原因は各種オペレーターオーバーロード時の動作に際して上述したチェックが入り、dereferenceできない内容ならばassertしてしまうからです。
これにより初期状態(例えば内部表現がnullptrのiterator)かどうかの判定ができません。
releaseビルドではチェックが入らないため問題なく扱えるのですが、どうしたら良いのでしょうか?
009181
2012/04/01(日) 02:47:59.43new するってことはデフォルトコンストラクタが必要
>>89
継承しても問題の根本が解決するわけじゃない
a.h
#pragma once
class a
{
public:
a(){}
make_b(){new b();}
}
b.h
#pragma once
class b
{
public:
b(){}
make_a(){new a();}
}
と言った具合にcやcppを使わずJavaのようにhファイルのみでクラスを実装しようとした時に
双方向で参照可能にするようなコンパイラの定義方法が存在しないので困ってる
0092営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 03:11:13.67c++じゃそれが普通だ
0093営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 03:13:11.61a.h,b.hをまとめてab.hに書く
普通はcppに書くけどね
0094営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 08:48:02.88テンプレートでなら見たことがあるな、そういう書き方。
普段からC/C++に触ってるわけじゃないので、今でもやるのかどうかは知らないけど。
0095営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:17:11.93あとC++とJavaは単に文法が似ているだけで中身全く別の言語なんで
"Javaのように"できることはほとんどないと思ったほうがいい
むしろ危険
0096営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 17:59:11.24環境:Windows7 32bit , Visual Studio 2005
fopen("r+")で取得したファイルポインタに書き込む際、
"w"で開いたかのように書き込む(内容をすべて上書きする)方法はありますか?
0097営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:27:13.370098営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:16:45.57ありがとうございます!
0099営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 02:02:15.72なんでそんな上から目線なの?
もうbをaの内部クラスにしちまえよ
0100営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 10:28:15.11単純に実装すると、負かどうかや、小数部がちょうど0.5のとき
など分岐だらけになってしまいます。
分岐のない高速なアルゴリズムを教えていただけませんか?
0101営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 10:48:00.450102営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 11:09:16.620103営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 11:38:21.93適当に楽に作れ。
あとでそこがボトルネッが判明してから手を出す。
0104営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 13:38:52.92cmov使ってみたら?
用途は違うけど分岐なくそうと思って昔SSEで書いたことがあるんだけど
そのときはSSEレジスタへのロード&ストアが遅すぎて敗北した
ぜひ試してみて結果を教えてほしい
0105営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:57:35.42この前提がありえないからその悩み自体ゴミだ
0106営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:18:05.81内部構造と実装コードの癒着が少なくなる方向付けも出来るし
0107営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:30:14.720108営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:07:24.500109営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 07:22:15.00勉強すれ
0110営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 10:07:30.060111営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 12:38:32.98あんまりロジック部分を別の翻訳単位に分離すると
コンパイル時間が爆発的に大きくなるから。
どっかのブログで理論値と実測結果の両方を示して
「テンプレートは全部一つの翻訳単位に埋め込むと超速^^」
みたいなおもしろい結論(ただし上司に殺される)を出してなかったっけか
0112営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 15:35:16.49boostにあるんじゃね?
0113営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 21:22:45.05文法上はこの制限を回避するexportキーワードってのもあるが
現実はほとんどのコンパイラが実装してなかったし、C++11では削除された
boostなんて全部ヘッダにロジック書いてる
0114営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:39:46.72使い分ける基準などあるのでしょうか?
0115営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:40:51.200116営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 23:20:31.03Windows API使わないとUnicode入出力できんぞ。
(正確には、「できるがめんどい」・3・)
0117営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 23:48:25.94自分に必要な機能を持ってるものを選ぶ
機能的にどれでも要件を満たしているなら、使い勝手、パフォーマンス、移植性等を
考慮して自分にとってメリットの大きいものを選ぶ
ただしWindowsの入出力ではUnicodeファイル名やラージファイル等をサポートしたい
場合、移植性はどのみち犠牲になってくるが
ファイル入出力に関して言えば、例えばAPIでファイルを開いた後
_open_osfhandle() -> _fdopen()
でファイルポインタを得てstdioを使う、といった複合技も可能だよ
0119デフォルトの名無しさん
2012/04/12(木) 10:23:09.39VC++でいう/FAsのようなものがほしいのですが
0120デフォルトの名無しさん
2012/04/12(木) 10:52:43.450121デフォルトの名無しさん
2012/04/12(木) 21:26:46.42リストビューにイメージリストをセットすると、リストビューが勝手に削除してくれるようです
拡張コンボボックスのイメージリストは削除されるのでしょうか?
また、仮にリソースリークしてもアプリケーションが終了すれば問題ないのでしょうか?教えてください
0122デフォルトの名無しさん
2012/04/13(金) 01:53:33.31ありがとうございます
やりたかったことはまさにこれで、FreeBSD上ではうまく動きました
が、Windows上のh8300-elf-gccではエラーがでてうまく逝きませんでした(´・ω・`)
もうちょっと調べてみます
0123デフォルトの名無しさん
2012/04/13(金) 22:36:29.92普段は別の処理をしていて、キーボードから入力があったときのみにそれに対して反応させるにはどうすればよいのでしょう?
0124デフォルトの名無しさん
2012/04/13(金) 22:51:23.670125123
2012/04/13(金) 22:55:26.44入門書を読み終えたので、STGでも作ってみようかと思ったのですが、どうしても入力待ちで停止してしまいます。
なにか良い方法はないでしょうか?
0126デフォルトの名無しさん
2012/04/13(金) 22:57:57.11(getchar() は 入力があるまで止まるよね)
非標準関数なら環境によって色々あるだろうけど
0127デフォルトの名無しさん
2012/04/13(金) 22:59:49.040128デフォルトの名無しさん
2012/04/13(金) 23:04:42.460129デフォルトの名無しさん
2012/04/13(金) 23:06:15.27こいつを試してみます
0130デフォルトの名無しさん
2012/04/13(金) 23:07:02.09書き込む前に更新するの忘れてました
kbhitで試してみます
ありがとうございました
0131デフォルトの名無しさん
2012/04/13(金) 23:11:46.73curses使え
0132デフォルトの名無しさん
2012/04/15(日) 01:22:10.100133デフォルトの名無しさん
2012/04/15(日) 11:41:23.86ものによるけど、VCでビルドすることを考えているものは、大体ビルド手段を
提供しているから、それがないものは簡単にはいかないと思った方がいい
やって出来なくないものもあったけど、ソースの書き換えが必要だったり、
ビルドされる流れを理解する必要があったり、関連ライブラリの移植が必要だったりと、
かなり労力がかかったよ
0134デフォルトの名無しさん
2012/04/17(火) 18:32:12.77せっかく型に厳密だったのに台無しじゃないですか?
0135デフォルトの名無しさん
2012/04/17(火) 18:53:32.49MinGWで簡単にビルドできて(依存性が少ない)、かつC99で書かれていないなら
比較的容易にMSVC対応できる可能性は高い
MinGWでもビルドが面倒くさかったりMinGWでもビルドできなかったりC99で
書かれているものは基本的に茨の道だが、これも難易度はケースバイケース
Unixのシステムコールが使われているようなものでも、ある程度簡単に移植可能な
ものもあるが、fork()あたりが使われているとそうはいかない
0136デフォルトの名無しさん
2012/04/17(火) 18:55:17.02なんかもダメよ
まあ細かい話だけど
0137デフォルトの名無しさん
2012/04/17(火) 21:11:26.93複数の型に対応できるだけであって、厳密なのは大して変わらなくね?
0138デフォルトの名無しさん
2012/04/17(火) 21:16:56.680139デフォルトの名無しさん
2012/04/17(火) 22:01:52.370141デフォルトの名無しさん
2012/04/18(水) 03:27:26.980142デフォルトの名無しさん
2012/04/18(水) 07:56:28.43とかやりたくなるな…
0143デフォルトの名無しさん
2012/04/18(水) 12:10:36.840144デフォルトの名無しさん
2012/04/18(水) 12:15:06.88やりづらくなっているのはいいことだ
0145デフォルトの名無しさん
2012/04/18(水) 22:05:07.600146デフォルトの名無しさん
2012/04/18(水) 23:38:42.82まずはCを始めます。
次に、C++の入門書を読みます。
\(^o^)/
0147デフォルトの名無しさん
2012/04/19(木) 21:49:25.06C++の得意分野というか、C++を習うとどんなことができるのだろうか。
馬鹿なことを聞くなと言われそうだが、プログラミングの腕を磨きたいと
思って。誰か教えてください。以前、C言語とFortran, Perl を
やったことがあります。
0148デフォルトの名無しさん
2012/04/19(木) 22:06:11.640149デフォルトの名無しさん
2012/04/19(木) 22:52:05.88不可能をなくすことができる
0150デフォルトの名無しさん
2012/04/20(金) 01:19:38.32とりあえず、windowsでGUIをもつソフト作ろうと思うとC++の知識が不可欠らしい。
自分はオブジェクト指向が意味不明で積んだw
0151デフォルトの名無しさん
2012/04/20(金) 01:32:31.400152デフォルトの名無しさん
2012/04/20(金) 08:47:42.14>>150
>>151
レスありがとうございました。
まさかレスが返ってくるとは思わなかったのでうれしかったです。
0153デフォルトの名無しさん
2012/04/20(金) 21:51:11.70windowsのGUIは、api使ってC言語でできる
というか、基本のapiはただの関数なので、C++である必要はない
0154デフォルトの名無しさん
2012/04/21(土) 02:57:43.350155デフォルトの名無しさん
2012/04/21(土) 19:34:54.96win32api勉強してみたが本格的なもの作れる気がしないわ。
0156デフォルトの名無しさん
2012/04/21(土) 19:57:54.08fox
SDL
C#
GTK
HSP
C++でないものをあるが、メインはC++DLLで作って呼び出せばいい・。
0157デフォルトの名無しさん
2012/04/21(土) 20:14:00.67ありがとう
FOXとSDLは初めて聞いたなぁ
0158デフォルトの名無しさん
2012/04/21(土) 22:58:28.930159デフォルトの名無しさん
2012/04/22(日) 00:40:09.41環境や目的によって変わってくるので
一通り使って消去法で選ぶのがいいと思うよ
マルチスレッド対応なGUIツールキット欲しいわぁ
0160デフォルトの名無しさん
2012/04/22(日) 01:58:03.13マルチスレッド機能とGUIが一緒についてくるってだけ?
0161デフォルトの名無しさん
2012/04/22(日) 16:22:53.860162デフォルトの名無しさん
2012/04/22(日) 16:30:56.360163デフォルトの名無しさん
2012/04/22(日) 17:01:33.350164デフォルトの名無しさん
2012/04/22(日) 17:11:29.74コンテナに要素を追加するとか realloc() を呼び出すとか
0165デフォルトの名無しさん
2012/04/22(日) 17:31:08.80ありがとうございます。
C++ではmallocはあまり使わないと書いてあったのですが
再確保の場合コンテナを使うのが一般的なのでしょうか?
0166デフォルトの名無しさん
2012/04/22(日) 17:35:42.22そもそも「再確保」を目的にすることが無い。
どうせコンテナの要素を動的に増やしたいんだろ。
標準ライブラリを使って素直なコードを書けばいい。
0167名無しさん
2012/04/23(月) 15:05:45.620168デフォルトの名無しさん
2012/04/23(月) 23:27:17.12擬似コード書くと
subthread() {
App().MainLoop(Form())
}
これがまともに動くもの。
0169デフォルトの名無しさん
2012/04/24(火) 01:28:50.39> SetParent 関数を使うと、ポップアップウィンドウ、オーバーラップウィンドウ、子ウィンドウの親ウィンドウを設定できます。新しい親ウィンドウと子ウィンドウは、同一アプリケーションに属していなければなりません。
ということらしいのですが・・・
なければイベントを捕まえて上下関係を設定しなおすことも考えているのですがちらつきそうで
0170デフォルトの名無しさん
2012/04/24(火) 01:43:22.31スレ違い
0171デフォルトの名無しさん
2012/04/24(火) 06:38:02.171〜9までの連続する数字の間に和・差・積の演算子(+, -, *)を適当に入れて、
式の値がちょうど 100 となる例を挙げよ(10とおりだけ書け)。
たとえば、
1 + 2 * 3 * 4 * 5 + 6 * 7 - 8 * 9 = 91
というような計算をする。ただし、この例では式の値が91となるので答えではない。
0172デフォルトの名無しさん
2012/04/24(火) 06:39:48.930173デフォルトの名無しさん
2012/04/24(火) 10:38:37.42C/C++の宿題片付けます 156代目
http://toro.2ch.net/test/read.cgi/tech/1328276597/
291 :デフォルトの名無しさん:2012/02/16(木) 07:29:17.20
[1] 授業単元:知識と推論
[2] 問題文 探索によってパズルを解くプログラムを作成せよ(小町算)
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: VisualStudio2010
[3.3] 言語: C言語
[4] 期限: 2/16
よろしくおねがいします><
292 :デフォルトの名無しさん:2012/02/16(木) 08:52:44.46
>>291
小町算には変形ルールのやつもあるけど、
「1□2□3□4□5□6□7□8□9 = 100 という数式の□の中に、+,−,×,÷,空白 のいずれかを一つずつ入れる」でいいのかな?
ttp://ja.wikipedia.org/wiki/%E5%B0%8F%E7%94%BA%E7%AE%97
293 :デフォルトの名無しさん:2012/02/16(木) 12:34:14.04
>>291
空白なし、*優先、/で小数部切り捨てなら↓
http://ideone.com/IjTzV
0174デフォルトの名無しさん
2012/04/24(火) 13:51:56.91これは失礼
0175デフォルトの名無しさん
2012/04/24(火) 23:00:53.38あちらは機能していないようなのでこちらで改めてお尋ねします。。
VS2010でWTLベースのアプリを作成しているのですが、ウィンドウ上でマウスポインタを
移動しているとき、Ctrlキーが押されている間だけポインタを変更したいのです。
しかし、クライアント領域内でポインタを動かすだけではWM_SETCURSOR メッセージが
送られず、ポインタを変更できません。
任意のタイミングでポインタを変更する方法はないでしょうか。
0176デフォルトの名無しさん
2012/04/24(火) 23:03:58.280177デフォルトの名無しさん
2012/04/27(金) 07:42:07.68nebulousってアプリでコーディングしてそのままmobileterminalでコンパイルしてんるだけど/nで改行してくれない
さすが文鎮
0178デフォルトの名無しさん
2012/04/27(金) 07:49:48.780179デフォルトの名無しさん
2012/04/27(金) 07:59:41.410180デフォルトの名無しさん
2012/04/28(土) 16:54:19.120181デフォルトの名無しさん
2012/04/28(土) 17:03:16.450182デフォルトの名無しさん
2012/04/28(土) 22:24:14.400183デフォルトの名無しさん
2012/04/28(土) 22:44:40.570184デフォルトの名無しさん
2012/04/29(日) 08:50:02.980185デフォルトの名無しさん
2012/04/29(日) 10:11:23.50と言いつつ、>182, >183, >184が三人とも私と違う解釈をしていて話が噛み合っていないだけなんだろうけどね。
0186デフォルトの名無しさん
2012/04/29(日) 12:20:18.110187デフォルトの名無しさん
2012/04/29(日) 12:28:18.780188デフォルトの名無しさん
2012/04/29(日) 13:27:32.410189デフォルトの名無しさん
2012/04/29(日) 14:19:30.940190デフォルトの名無しさん
2012/04/29(日) 14:26:13.94それ 0xcd とかデバッグ時メモリ未初期化のデフォルト値が入ってるんじゃね
0191デフォルトの名無しさん
2012/04/29(日) 15:27:09.55フフフフフフフ
0192デフォルトの名無しさん
2012/04/30(月) 01:06:03.830193デフォルトの名無しさん
2012/04/30(月) 12:24:04.250194デフォルトの名無しさん
2012/04/30(月) 12:25:36.330195デフォルトの名無しさん
2012/04/30(月) 16:12:04.73パーサを作ろうと思っているのだが、何か決まった作り方とかありますか?
デザインパターン的な
0196デフォルトの名無しさん
2012/04/30(月) 16:26:53.120197デフォルトの名無しさん
2012/04/30(月) 16:27:32.29構文解析器
http://ja.wikipedia.org/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90%E5%99%A8
0198デフォルトの名無しさん
2012/04/30(月) 16:43:40.52ありがとう
今までホント自己流でやってきたから情報ありがたい
パーサライブラリとかもあるんかな?ぐぐってみる
0199デフォルトの名無しさん
2012/05/01(火) 12:28:53.020200デフォルトの名無しさん
2012/05/02(水) 01:44:51.75class A{
virtual void func(void) = 0;
};
class B : public A{
virtual void func(void) override;
};
のようにoverrideがなければコンパイルエラーにしたいのですが
誰かがvoid A::func(int)のように変更した時にBの変更し忘れを検出したいというのが目的です
0201デフォルトの名無しさん
2012/05/02(水) 03:14:58.13かな
Windows使ってないけど。
0202NAS6 ◆n3AmnVhjwc
2012/05/02(水) 16:13:47.90エラトステネスの櫛とためし割りのハイブリッド
ttp://www5b.biglobe.ne.jp/~NAS6/secret/index.htm
664579番目の素数検索
通常ルーチンprime4()int型3867ms
私のint型1654ms long long int型5897ms
0203NAS6 ◆n3AmnVhjwc
2012/05/02(水) 16:17:06.100204デフォルトの名無しさん
2012/05/02(水) 22:33:34.500205NAS6 ◆n3AmnVhjwc
2012/05/02(水) 22:55:55.73メモリの都合で最大9番目までの素数の乗算の数の
エラトステネスの篩を初期化して倍数掛け
0206NAS6 ◆n3AmnVhjwc
2012/05/02(水) 23:11:28.560207デフォルトの名無しさん
2012/05/02(水) 23:13:35.71例えばフリーで使える速いやつにかったら研究者になれるレベルだろ。
0208デフォルトの名無しさん
2012/05/02(水) 23:16:55.329番目までなら
0209デフォルトの名無しさん
2012/05/02(水) 23:27:31.70AKS素数判定法は、与えられた自然数が素数であるかどうかを決定的多項式時間で判定できる、世界初のアルゴリズムである。
http://ja.wikipedia.org/wiki/AKS%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A%E6%B3%95
ミラー-ラビン素数判定法は、与えられた数が素数かどうかを判定する素数判定アルゴリズムの一種。
フェルマーの素数判定法や Solovay-Strassen 素数判定法と同じく、乱択アルゴリズムの一種である。
http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%A9%E3%83%BC-%E3%83%A9%E3%83%93%E3%83%B3%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A%E6%B3%95
一般数体ふるい法 - Google 検索
http://www.google.com/search?q=%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E3%81%B5%E3%82%8B%E3%81%84%E6%B3%95
Adleman-Pomerance-Rumely - Google 検索
http://www.google.com/search?q=Adleman-Pomerance-Rumely&lr=lang_ja
暗号理論の研究動向
暗号技術調査室では、最先端の暗号基礎技術研究の動向を調査してきた。 暗号は、もはや軍事目的のみでなく、日常生活に欠かすことの出来ない基礎技術として、 一般消費者が意識するしないに関わらず頻繁に用いられている。
http://www.ipa.go.jp/security/fy10/contents/crypto/report/Cryptographic-Research.htm
一般数体篩法実装実験(6) : 格子篩
小さな因子を含まない数百ビット以上の合成数に対する素因数分解アルゴリズムとして,数体篩法が現在最も高速と考えられている.
http://ci.nii.ac.jp/naid/110003296537
NTTら、768ビット合成数を一般数体篩法にて完全分解に成功 [2010/01/08]
http://news.mynavi.jp/news/2010/01/08/055/index.html
素数判定に使用しているプログラムを紹介します。
http://www.geocities.jp/ayuchan_k_jp/prime/prime_program.html
0210デフォルトの名無しさん
2012/05/03(木) 01:39:29.76http://www.spoj.pl/problems/PRIC/
0211デフォルトの名無しさん
2012/05/03(木) 19:53:47.06質問者は確実にC3668などを発生させられるために
overrideの使用を強制したいと言っているように思われる。
俺もあれば使いたいんだけど、見当たらないんだよね……。
0212デフォルトの名無しさん
2012/05/03(木) 20:11:40.530213デフォルトの名無しさん
2012/05/04(金) 02:19:06.341,2,3,4,1,2,3,4,1,2,3,4,1,...(1,2,3,4の繰り返し)に対応させたいんですが、
IF文とか3項演算子とかを使わずにできますか?
%を使うと1,2,3,0,1,2,3,0になって上手くいきません。
0214デフォルトの名無しさん
2012/05/04(金) 02:21:52.910215デフォルトの名無しさん
2012/05/04(金) 02:55:08.020216NAS6 ◆n3AmnVhjwc
2012/05/04(金) 18:00:53.36大きな数じゃないと処理が重くて出番がない
大きな素数(メルセンヌ数など)の原始根を求めたいんだが、なんかいい方法はないか?
素数自体は 2^1000 程度、原始根は 2 とか 3 とかじゃなくて、300〜500 前後のものがほしいのだが。
0218デフォルトの名無しさん
2012/05/04(金) 18:27:33.29http://aozoragakuen.sakura.ne.jp/suuron/node37.html
0219NAS6 ◆n3AmnVhjwc
2012/05/04(金) 18:39:10.940220デフォルトの名無しさん
2012/05/04(金) 18:39:56.79http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
http://mailsrv.nara-edu.ac.jp/~asait/c_program/sample/primitive.htm
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1316937973
http://www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm
http://homepage2.nifty.com/socialist-consort/agora_faith/PrimitiveRoot09.html
0221デフォルトの名無しさん
2012/05/05(土) 07:00:10.490222デフォルトの名無しさん
2012/05/05(土) 07:04:55.38あと暗号で素数を利用してるケースが多々あるとか
0223デフォルトの名無しさん
2012/05/05(土) 07:31:43.91その手の話は、コンピュータサイエンスやってる科学者だろ
アプリケーションを作成するようなレベルで素数なんて使うか?
0224デフォルトの名無しさん
2012/05/05(土) 09:15:25.97ピンポン!原始根って虱潰ししかないのでしょうかね。 2^30 くらいで青息吐息
0226デフォルトの名無しさん
2012/05/05(土) 13:00:54.54有限体F_pにおいてFFT乗算を用いるのに使ったり、
環Rがベースとなる多項式R[x]のgcdを高速に求めたり(このプロセスは先に述べた高速算術に必要になる)。
特に後者は、古典的アルゴリズムを使った時の中間結果の有理数の分子及び分母が膨大な数になるのを防ぐために、
一度n in R[x]/<p>で計算を行った後にnをR[x]の元に復元する方法がある。
0227デフォルトの名無しさん
2012/05/05(土) 13:19:52.59http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
0228デフォルトの名無しさん
2012/05/05(土) 13:23:43.62小さいやつから平方剰余の相互則を使って判定しろということ。
素数判定のように高度な知識はいらんだろ。初等整数論だろ。
0229デフォルトの名無しさん
2012/05/05(土) 13:30:48.88xxxxxxx0
xxxxx101
xxxx1001
xxx10001
10000001
下桁に0が並ぶ数字は全部除外できるんだから
0230デフォルトの名無しさん
2012/05/05(土) 15:30:26.07(素数かは知らないが)もしpが素数だとしてp-1の素因数分解が必要となり実質的には素数判定より手間掛かるな。
0231デフォルトの名無しさん
2012/05/05(土) 15:44:17.44素因数分解には試し割り法, モンテカルロ法, 楕円曲線法, 二次篩法など多数のアルゴリズムが存在するが,その中でも一般数体篩法は100 桁以上の数を分解するには現在知られる最速のアルゴリズムである.
2005年には 200桁の数(rsa200)が一般数体篩法で分解された.本研究では,オープンソースの一般数体篩法ソフトウェアGGNFSについて,性能測定を行なう.
http://cryptology.cocolog-nifty.com/blog/2008/01/ggnfs_b47a.html
ここでは、素因数分解のための各種アルゴリズムについて解説する。対象は、以下のとおり。
Brute force method
ρ method(Pollard, Brent)
p-1 method
p+1 method
連分数法
複数多項式二次ふるい法
楕円曲線法
http://www.asahi-net.or.jp/~kc2h-msm/mathland/math12/index.htm
まず、素因数分解のためのプログラムを入手する必要がある。
Windows PC 上で動作する主なものとしては、
factor (Windows (DOSプロンプト))
ppmpqs (Windows (DOSプロンプト), Linux)
UBASIC (Windows (DOSプロンプト))
SNFS (Windows (DOSプロンプト)) 等がある。
http://www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/howto.htm
分解するにあたっての方針(戦略)について
まず、速いマシンを長時間利用できる場合、90桁以下の数をppmpqsで分解することを薦める。これは、時間さえかければ、確実に分解できるというメリットがある。
マシンがそれ程速くない場合、途中で中断しなければならない場合、90桁以上の数を対象とする場合は、GMP-ECMを使うことを薦める。
http://www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/howto.htm
0232デフォルトの名無しさん
2012/05/05(土) 15:51:46.64GGNFSはNFS法(the Number Field Sieve method; 数体ふるい法)を用いる素因数分解プログラムです。
SNFS法(the Special Number Field Sieve method; 特殊数体ふるい法)と
GNFS法(the General Number Field Sieve method; 一般数体ふるい法)の両方に対応しています。
http://homepage2.nifty.com/m_kamada/math/ggnfs_ja.htm
GMP-ECMはECM(Elliptic Curve Method; 楕円曲線法)を用いる標準的な素因数分解プログラムです(オプションでP-1法やP+1法も選択できます)。
小さな素因数を手早く抽出することができるので、SIQS法やNFS法の前処理として、
あるいはSIQS法やNFS法を適用するには大きすぎる合成数を分解したいときに利用されています。
http://homepage2.nifty.com/m_kamada/math/ecm_ja.htm
Msieve は MPQS 法 (the self-initializing Multiple Polynomial Quadratic Sieve; 自己初期化複数多項式二次ふるい法) と
GNFS 法 (the General Number Field Sieve; 一般数体ふるい法) を用いる素因数分解プログラムです。
前処理として P-1 法、P+1 法、ECM (Elliptic Curve Method; 楕円曲線法) なども実装しており、さまざまな数に柔軟に対応します。
http://homepage2.nifty.com/m_kamada/math/msieve_ja.htm
GGNFS - A Number Field Sieve implementation
http://www.math.ttu.edu/~cmonico/software/ggnfs/index.html
一般数体ふるい法 ソース - Google 検索
http://www.google.com/search?q=%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E3%81%B5%E3%82%8B%E3%81%84%E6%B3%95+%E3%82%BD%E3%83%BC%E3%82%B9
0233デフォルトの名無しさん
2012/05/05(土) 16:04:39.12空のループでも2^31くらいやったら相当時間かかるだろうから、やっぱ素因数分解からだな。
0234デフォルトの名無しさん
2012/05/05(土) 16:06:29.110235デフォルトの名無しさん
2012/05/05(土) 16:12:08.31ρ Method (ρ法)
基本的にはモンテカルロ法であり、算出される因数はN,pの大きさには無関係であるが、
経験的には10桁以下程度の大きさの因数pを算出することが多いため、素因数分解の初期フェーズとして使われることが多い。
P−1 method(P−1法)
数学的にはフェルマーの小定理を根拠としており、最も理解しやすいアルゴリズムである。
算出される因数pに対し、p−1が小さい素因数の積で構成されているものを対象とするため、
20桁以下ぐらいの素因数pの算出が可能であり、値によってはもっと大きな素因数も算出されることがある。
ρ法の次のフェーズとして、20桁程度までの素因数をたたき出す時に使用することが多い。
Elliptic Curve Method (楕円曲線法)
数学的には、楕円曲線 y2=x3+ax+b 上の有理点が、mod N で考えた場合のある演算に対してアーベル群を作るため、
Nよりも小さい位数で0(mod N)となる場合があり、その時の位数mとNのgcd をとることにより、Nの素因数を算出する方法である。
複数多項式2次ふるい法で分解できない桁数の数に対して用いる。30桁以下程度の素因数を算出する。
Multiple Polynomial Quardratic Sieve(複数多項式2次ふるい法)
数学的には、フェルマーの方法の拡張版であり、
x2−y2≡0(mod N) の解を多数構成し、求める。
ある桁数以下の数を確実に分解するため、小さい数についての素因数を求める場合、
または、p−1法、楕円曲線法で小さい因数は出しきったと思われる数について、完全分解を求めたい時に適用する。
Number Field Sieve(数体ふるい法)
2005年頃から、プログラムが公開されるようになった。
一般の数に関して、100桁を越えると、複数多項式2次ふるい法で分解するよりも、一般数体ふるい法でやった方が速い。
また、分解対象の数が、係数の小さい6次以下の多項式で表現できる場合、
特殊数体ふるい法が絶大な威力を発揮し、Pentium 4 マシンで、 160桁ぐらいまでの分解が可能である。
http://www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/matha101.htm
0236デフォルトの名無しさん
2012/05/05(土) 19:21:28.28SFMTで作った64bitのunsigned longの乱数があります
これを1bitずつ上位ビットor下位ビットから
array[0] = 1;
array[1] = 0;
・
・
・
というように64個の配列(intでもboolでも何でもOK)に入れたいんですが、どう書けばいいでしょうか
最終的に、ループで回して0と1の行列は長い(数千万の)配列にしたいので
速いコードだとありがたいです
0237デフォルトの名無しさん
2012/05/05(土) 19:58:50.80for(int i = 0 ; i < 64 ; i++)
{
array[i] = (r64>>i)&0x01;
}
0238デフォルトの名無しさん
2012/05/05(土) 20:07:44.12そんな効率の悪そうなことをするためのコードが速くて本当に何か意味があるのかね?
素数かどうか不明のものを素因数分解すること
ではなく
既知の巨大素数の原始根を求めること
なのですが?
うーん。全然わからん。
0240デフォルトの名無しさん
2012/05/05(土) 20:37:55.620241デフォルトの名無しさん
2012/05/05(土) 20:43:25.15これ。
mod19の原始根をすべて求めよという問題があるのですがひとつひとつ表を埋めていく... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
0242デフォルトの名無しさん
2012/05/05(土) 20:59:34.721.平方剰余の性質を使って平方非剰余の根aをみつけます。2.aが原始元でない場合は平方剰余の根bをaに掛けa×bを計算します。
mod p ではp-1と互いに素となる原始根のべき乗となるものを探すわけです。
mod 63823の原始元の求め方
第2補充法則 (2/p)=(-1)^((p^2)-1)/8) より(-1)^((63823^2)-1)/8)=1 で2は平方剰余
(q/p)(p/q)=(-1)^( ((q-1)/2)×((p-1)/2) )を利用して、(3/63823)(63823/3)=(3/63823)(1/3)=-1 なので、3は平方非剰余
p-1=63823-1=2×3×11×967
3^(2×11×967)=16721 で3次剰余ではない。3^(2×3×967)=28107 で11次剰余ではない。3^(2×3×11)=40828 で967次剰余ではない。
したがって3は原始根
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
平方剰余の相互法則 - Wikipedia
a と p とが互いに素であるとき、合同式
http://upload.wikimedia.org/wikipedia/ja/math/9/3/1/9311f58ff72132d811ba22cdee7c8d9e.png
が解を持てば、 a は p を法として平方剰余であるといい、そうでないとき平方非剰余であるという。
(p, a) を a と p の最大公約数とするとき、次の記号
http://upload.wikimedia.org/wikipedia/ja/math/1/4/d/14d936e40558c1f206d4394943f794b6.png
を、アドリアン=マリ・ルジャンドルにちなんでルジャンドル記号と呼ぶ。
[編集] 相互法則平方剰余の相互法則は整数 a が奇素数 p を法として平方剰余であるか否かを見いだす法則である。
p, q を相異なる奇素数とするときに、
http://upload.wikimedia.org/wikipedia/ja/math/b/c/b/bcb6ec45662135c3c218a771577e9ef7.png
が成り立つ。
また、このほかに以下の第1補充法則、第2補充法則が知られている。
第1補充法則:
http://upload.wikimedia.org/wikipedia/ja/math/d/f/3/df3f591f53cfc80bdea6e5d7e74db393.png
第2補充法則:
http://upload.wikimedia.org/wikipedia/ja/math/f/0/3/f03b9412c25ac66daef4571029a536a6.png
またpとa、bが素であれば、
http://upload.wikimedia.org/wikipedia/ja/math/7/9/0/790121bd3962a9abf69e1a69448e134d.png
0243デフォルトの名無しさん
2012/05/05(土) 21:05:39.49http://nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf
http://aozoragakuen.sakura.ne.jp/suuron/node41.html
http://www.geocities.jp/ikuro_kotaro/koramu/1548_p1.htm
http://pisan-dub.jp/doc/2011/20110114001/5_6.html
http://www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm
0244デフォルトの名無しさん
2012/05/05(土) 21:11:13.23>>237のを使うぐらいしかないんじゃない?
それかいちいち計算せずに、関数を用意しておくとか?
int get_bit(ulong r64)
{
return (r64>>i)&0x01;
}
おそらく>>236のしようとしていることは非効率的で、
オリコウでない方法だと思うよ。
0245デフォルトの名無しさん
2012/05/05(土) 21:21:22.96奇素数 p を法とする原始根 g は p を法として平方非剰余である.
http://nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf
法997では、位数は996の約数になるので、aが、997の原始根であることを確かめるには、996=2・2・3・83 に注意して、a^498≠1、a^332≠1、a^12≠1 かどうかを調べれば十分。
http://www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm
0246デフォルトの名無しさん
2012/05/05(土) 21:39:15.70http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
mod19の乗法群は位数18の巡回群になります。
18=2×3×3
なので 2, 3 と互いに素な原始元の冪乗は全て原始元になります。
原始元は{2,3,10,13,14,15}ですが、
このなかのどれか一つを選択してgとした場合
g,g^5,g^7,g^11,g^13,g^17
は全て原始元になります。
0247デフォルトの名無しさん
2012/05/05(土) 22:08:34.97別な方法で実装しました
要するに長い行列に対してm-sequenceでディザリングをしたかったのですが
後で処理をするためにディザリングの配列は残しておかねばなりません
なにかいい方法がありますか?
0248デフォルトの名無しさん
2012/05/05(土) 23:29:30.870249NAS6 ◆n3AmnVhjwc
2012/05/05(土) 23:43:14.24Pa=2.32nlogn+2n
で大体出せた
0250NAS6 ◆n3AmnVhjwc
2012/05/05(土) 23:54:41.30Pa=nlogn+nloglogn
って書いてた
0251NAS6 ◆n3AmnVhjwc
2012/05/06(日) 00:02:10.050252デフォルトの名無しさん
2012/05/06(日) 00:03:17.220253デフォルトの名無しさん
2012/05/06(日) 10:44:31.59さすがです
0254デフォルトの名無しさん
2012/05/06(日) 11:00:33.25すべての原始根をもとめるのに素因数分解なしで高速に求められるのがあるのか?
0255デフォルトの名無しさん
2012/05/06(日) 11:53:07.350256NAS6 ◆n3AmnVhjwc
2012/05/06(日) 13:04:47.55あっても指数時間の計算でしょ
0257NAS6 ◆n3AmnVhjwc
2012/05/06(日) 13:19:19.66Pa=2((0.45loglog(logn+0.25)+1.12)nlogn+n)
は多項式時間の概算計算す
0258デフォルトの名無しさん
2012/05/06(日) 13:56:39.90が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0259デフォルトの名無しさん
2012/05/06(日) 14:24:03.054年ほど前にやっていたことがあって、再度VisualStudio2008C++EEを落としてみたんですが、色々変わったんでしょうか?
講座サイトを見ながらやっているんですが、新規作成→追加で「C++ファイル」ではなく「C++クラス」と出てきてしまいます
試しに作ってみると、.cppに初めから何か書かれているんですが…
0260デフォルトの名無しさん
2012/05/06(日) 14:26:27.52嫌ならコマンドラインでコンパイルしたら良い。
0261NAS6 ◆n3AmnVhjwc
2012/05/06(日) 14:26:55.62ソースファイルフォルダ右クリックで追加すればいい
0262デフォルトの名無しさん
2012/05/06(日) 14:30:54.14.cppはその下に記述すれば良さそうですね。
0263NAS6 ◆n3AmnVhjwc
2012/05/06(日) 14:51:55.93その前後調べて当たったら暗号無効化なの?
0264デフォルトの名無しさん
2012/05/06(日) 15:00:05.08暗号解読では素因数が判明しないとダメだろ。
0265NAS6 ◆n3AmnVhjwc
2012/05/06(日) 15:12:59.720266デフォルトの名無しさん
2012/05/06(日) 15:14:54.570267デフォルトの名無しさん
2012/05/06(日) 15:21:11.34http://www.maitou.gr.jp/rsa/rsa14.php
0268デフォルトの名無しさん
2012/05/06(日) 15:25:46.002003 年の年末時点では素数と素数を掛けた数が 174 桁の数が、 100 台の業務用コンピュータで協調計算させて 3 ヶ月で素因数分解できることが実証されています。
一方、現在の RSA暗号 では一般的には素数と素数を掛け合わせた後が 310 桁にもなる数を用いています。
これでは、現在の数学で巨大な素因数分解を行うには、神をも味方につけた超人的な運を手に入れるしかないでしょう。
確率的には、残念ながら競馬やパチンコ、宝くじとは比べ物になりません。
http://www.maitou.gr.jp/rsa/rsa14.php
0269デフォルトの名無しさん
2012/05/06(日) 15:55:01.73聞いてきましたわ。
579 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 01:28:04.90
画像処理の質問ではないな。
unionって知ってる?
unsigned longをbit配列と同意義で読み替えてやればいい。組み込み系でよく使う手法だがや
580 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 04:42:09.66
>>578
ビットフィールドでググれ
581 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 04:44:12.99
ただ速くしたいなら素直にビット演算としてSIMDで書いたほうが速いだろ
0270NAS6 ◆n3AmnVhjwc
2012/05/06(日) 16:28:18.94使って四次篩作れば
310桁は4桁計算だけど?
二次篩でも17桁
0271デフォルトの名無しさん
2012/05/06(日) 16:31:58.501024ビット=310桁の素因数分解が一定時間で安定して出来るアルゴリズムを開発したら
研究所や大学からお呼びがかかるだろう。
0272デフォルトの名無しさん
2012/05/06(日) 16:41:15.73NTTは1月7日、スイス連邦工科大学ローザンヌ校(EPFL)、独ボン大学、フランス国立情報学自動制御研究所(INRIA)、オランダ国立情報工学・数学研究所(CWI)との共同研究により、
素因数分解問題において、従来の世界記録である663ビット(10進200桁)を上回る、
768ビット(10進 232桁)の合成数に対して、一般数体篩法による素因数分解を達成したことを発表した。
NTTらは今回、700ビットを超す素因数分解を達成したが、これは将来的にRSA暗号で使われている1024ビットの素因数分解も
達成される可能性があることを示唆することとなり、より高い強度かつ効率的な暗号技術を利用する必要性が高まることを意味する。
研究内容は、巨大な合成数に対して現段階で最も高速な解法として知られている一般数体篩法を用いて実施された。
篩処理は、全体の計算量の大半を占めるが、比較的容易に分散計算可能であることから多数の参加組織により並列に計算を行った。
処理は主にNTT研究所、EPFL、ボン大、INRIA、CWIにある多種多様のPCやクラスタを用い、
全体でおよそOpteron 2.2GHz換算で1,500年かけたのと同程度の計算量を要した。
また、理論的に最も計算料を要するステップの1つである線形代数は、分散計算が困難であり、今回は少数のクラスタを利用し、
それぞれのクラスタの速度や空き時間が異なっていても効率的に計算できる手法を開発・利用。
NTT研究所およびEPFLのクラスタ、またINRIAはフランスにあるALADDIN-G5Kを効率的に用い、
filteringで生成された疎行列からなる連立方程式を解いた。
Opteron 2.2GHz換算でおよそ155年の計算量を要した結果、分解に利用可能な解が得られたとする。
その結果、最終ステップとなる平方根(代数的数の平方根の計算及び最小公約数の計算)では、
EPFLに設置された計算機を用いることで、数時間で以下の解を得たという。
なお、同結果を受けてNTTでは、NTT研究所にて暗号技術全般の安全性を継続的に評価していくとするほか、
次世代暗号として楕円曲線上の演算規則を利用した新しい公開鍵暗号方式「楕円曲線暗号」の普及にも努めていくとしている。
http://news.mynavi.jp/news/2010/01/08/055/index.html
0273デフォルトの名無しさん
2012/05/06(日) 16:49:32.43http://www.nic.ad.jp/ja/newsletter/No44/images/0800_8.gif
http://www.nic.ad.jp/ja/newsletter/No44/0800.html
NTTなど、公開鍵暗号の素因数分解問題で768ビット整数の分解に成功
分解に要した計算資源は1700コア・年としている。デュアルコアのCPUを搭載したコンピュータなら、850台程度あれば約1年で分解できる計算になる。
実際にはNTT情報流通プラットフォーム研究所など5研究機関は2007年から分解を始め、PCクラスターなど300台程度のコンピュータを用いて、約3年かかったという。
http://itpro.nikkeibp.co.jp/article/NEWS/20100108/343056/
NTT、232ケタ整数の素因数分解に成功−世界記録を更新 現在使用の309ケタはあと10年は大丈夫!
http://highsociety.at.webry.info/201001/article_33.html
0274NAS6 ◆n3AmnVhjwc
2012/05/06(日) 16:57:07.10四次篩実装
2^n次篩も簡単に作れます
0275デフォルトの名無しさん
2012/05/06(日) 17:09:31.65素因数分解 - Wikipedia
2005年5月、200桁の合成数 RSA-200が素因数分解される(一般数体ふるい法、Bahr, Boehm, Franke, Kleinjung)
2006年8月、10381 + 1 から67桁の素数が分解される(楕円曲線法、B. Dodson)
2006年9月、7352 + 1 の約数として現れる128桁の合成数が素因数分解される(一般数体ふるい法、情報通信研究機構、富士通、富士通研究所)
2007年5月、21039 ^ 1の約数として現れる307桁の合成数が素因数分解される(特殊数体ふるい法、NTT、ドイツのボン大学、スイス連邦工科大学との共同研究)
2010年1月、232桁(768ビット)(NTT、スイス連邦工科大学ローザンヌ校(EPFL)、独ボン大学、フランス国立情報学自動制御研究所(INRIA)、オランダ国立情報工学・数学研究所(CWI)。一般数体ふるい法。300台PCの並列計算処理。約3年)
改訂多重基底多項式篩法(MBPS2、Multiple Base Polynomial Sieve 2nd)
2006年8月に考案したMBPSの改良版。
本方式で世界記録に挑戦する。原理プログラムを作成し、現在は試作プログラムの作成中
試作プログラムが完成すれば、ほぼ計算量の予測が可能であるが、本方式で数年以内に1024ビットの
RSA暗号の解読は可能になると思われる。
MBPS(多重基底多項式篩法)に対して、多項式f(x)を法とし、素イデアル基底で分解できるイデアルの積
で作られるイデアルも素イデアル基底で分解できる、特長を利用した方法。
http://www.cs.t-kougei.ac.jp/nsim/RSA.htm
GNFS176
2005年4月22日、我々のチーム(下記)は 11^281+1 の約数である 176桁の合成数を「一般数体ふるい法(GNFS)」で分解した。
http://www.rkmath.rikkyo.ac.jp/~kida/gnfs176.html
0276デフォルトの名無しさん
2012/05/06(日) 17:15:12.33営業停止審査を受けている未来貯蓄銀行のキム・チャンギョン会長が4日、中国へ密航しようとしていたところを、
仁川(インチョン)港で海上警察に逮捕されたとSBSが単独報道した。
報道によれば、海上警察は逮捕したキム会長の身柄を不良貯蓄銀行捜査を担当する、
貯蓄銀行不正合同捜査チームへ送る予定だと伝えられた。報道によればキム会長は、
5日午前8時に予定されていた貯蓄銀行経営評価委員会に出席して、
営業停止前に最後の意見を陳述するようにとの金融当局の通知を受けた後、
中国へ密かに渡航しようとしていたことが分かった。
一人だけでも生き残ろうと…未来貯蓄銀会長密航試み逮捕
韓国語 [05/05]
http://news.donga.com/Society/3/03/20120505/46025772/1
0277NAS6 ◆n3AmnVhjwc
2012/05/06(日) 17:16:14.77実験するのにはデータ型のビットを増やしたクラス作んなきゃ
ならないけどめんどい
0278デフォルトの名無しさん
2012/05/06(日) 17:24:37.82GGNFSはNFS法(the Number Field Sieve method; 数体ふるい法)を用いる素因数分解プログラムです。
SNFS法(特殊数体ふるい法)とGNFS法( 一般数体ふるい法)の両方に対応しています。作者はChris Monicoさんです。
http://homepage2.nifty.com/m_kamada/math/ggnfs_ja.htm
0279NAS6 ◆n3AmnVhjwc
2012/05/06(日) 17:35:01.58Long long intなら確認済みだから良いや
0280デフォルトの名無しさん
2012/05/06(日) 17:49:32.41http://gilchrist.ca/jeff/factoring/index.html
http://gilchrist.ca/jeff/factoring/benchmark.html
http://gilchrist.ca/jeff/factoring/pseudoprimes.html
GGNFS suite プロジェクト日本語トップページ - SourceForge.JP
http://sourceforge.jp/projects/sfnet_ggnfs/
0281NAS6 ◆n3AmnVhjwc
2012/05/06(日) 17:50:28.400282NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:08:31.98x^2-a^2=(x+a)(x-a)
複二次式で四次篩
x^4-a^4=(x^2+a^2)(x^2-a^2)
同様に八次篩、十六次篩。。。
0283NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:10:45.550284NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:24:01.640285デフォルトの名無しさん
2012/05/06(日) 19:26:14.07なるほど、そんなのあったなぁ
ビットフィールドでやってますた
0286NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:30:49.590287NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:32:52.700288NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:36:05.130289デフォルトの名無しさん
2012/05/06(日) 19:37:48.46ある日突然道端のオヤジが公然わいせつオナニーを始めたところを想像してほしい
嫌だろ?
0290NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:41:29.02ちゃんと判定出来るよ
0291NAS6 ◆n3AmnVhjwc
2012/05/06(日) 19:44:27.00他の暗号方式を考えないとね
リンク先をいろいろ紹介していただいてはいるのですが、難しくて私には一生理解できないだろうと思います。
そこで申し訳ないのですが、巨大素数の原始根を求めるために素因数分解が必要となる道筋を、もしよろしければ教えていただけないでしょうか?
簡単に試行してはみたのですが、2^31 で丸一日かかる有様です。あと手を打つとすればマルチスレッド化でしょうが、手元のは屁ノムx6 だしなあ。
http://ideone.com/In1SB (java でごめんなさい)
なお全部の原始根を求める必要はなくて 300〜500位のものが数個手に入ればいいかと思います。
0293デフォルトの名無しさん
2012/05/06(日) 22:03:24.000294NAS6 ◆n3AmnVhjwc
2012/05/06(日) 22:06:14.59ソース見てわからなかったらゴメン
0295NAS6 ◆n3AmnVhjwc
2012/05/06(日) 22:11:25.740296デフォルトの名無しさん
2012/05/06(日) 22:25:01.220297デフォルトの名無しさん
2012/05/06(日) 23:50:19.40たとえばp-1= 7*11*13として3が原始根を確かめるには。(pは素数でないから例として良くないが)
ラグランジュの定理から、p-1の全ての約数x(p-1を除く)に対して、3^x ≠ 1 (mod p)であることをいえばよい。
具体的には、3^(7*11) ≠ 1 (mod p)、3^(11*13) ≠ 1 (mod p)、3^(7*13) ≠ 1 (mod p)でいい。
ラグランジュの定理 (群論) - Wikipedia
G を有限群とし、H を G の部分群とする。このとき、H の位数は、G の位数を割り切る。
0298デフォルトの名無しさん
2012/05/06(日) 23:55:25.56簡単に言えば、Z/pZの元 aのn乗が1となるのは、nはp-1の約数に限る。(ラグランジュの定理)
p-1以外では1とならなかったら原始根。
なるほど、定義どおりにいけば、n が p について原始根であるかどうかをみるのに、現状では
n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) をみなければならない
ところが、教えていただいた方法では
p - 1 の約数についてのみ、と個数を絞り込むことができる
のですね。仮にメルセンヌ素数 2^1279 - 1を目標にすると、
2^1279 - 1 = 2(2^640 + 1)(2^320 + 1)(2^160 + 1) .... (2^5 + 1)(2^5 - 1)
まで因数分解できるので、個々の因数を素因数分解していくと、チェックしなければならない場合の数が激減しますね。少なくとも 2^1279 とおり、ということはないはず。
あとは何が原始根の候補となりうるのかが判別すればいいのですが、これは、>>292 でも使用しているのですが、計算量が増えるにしても 2 から順次チェックするのが絞り込みやすいのかもしれません。
しんどいですけれども。
×n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) をみなければならない
○n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) とならないことををみなければならない
0301デフォルトの名無しさん
2012/05/07(月) 02:01:22.14あと原始根の簡易判定としてこれ。
奇素数 p を法とする原始根 g は p を法として平方非剰余である.
http://nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf
0302デフォルトの名無しさん
2012/05/07(月) 04:50:17.14話がまだ続いているから、こっちに移動してもうちょっと詳しく質問してよ。
画像処理 その13
http://toro.2ch.net/test/read.cgi/tech/1301896601/
582 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 01:09:44.70
>>579
処理系依存だがや
583 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 02:54:26.37
処理依存の回答を求めているからだろ。だからもっと依存の強いSIMDのようにハードリソースに合わせたソフトのつくりはアリだと思う
unsignd longは固定64bitと書いてあるように読みとれないか?処理系が変わると大元設計から変えるんだろうね。
えっと、、だがや
0303NAS6 ◆n3AmnVhjwc
2012/05/07(月) 05:41:05.670304デフォルトの名無しさん
2012/05/07(月) 06:08:21.840305NAS6 ◆n3AmnVhjwc
2012/05/07(月) 06:17:52.76x^4-y^4=(x^2+y^2)(x+y)(x-y)
と分解したときにnの因数が()3つに分配されることを期待して
gcd(n,x+y)
からnの約数を見つける
同様に八次篩、十六次篩...ができる
0306NAS6 ◆n3AmnVhjwc
2012/05/07(月) 11:00:55.860307NAS6 ◆n3AmnVhjwc
2012/05/07(月) 11:36:43.44>>292
二次篩でいいよ
n=3937
√3937≒63
63^2-n=32=2^5
64^2-n=159=3*53
65^2-n=288=2^5*3^2
(63*65)^2≡(2^5*3)^2(mod n)
gcd(n,63*65±2^5*3)=31
0308NAS6 ◆n3AmnVhjwc
2012/05/07(月) 11:47:16.920309デフォルトの名無しさん
2012/05/07(月) 11:50:11.99Windows Factoring Software Binaries (64bit & 32bit)
http://gilchrist.ca/jeff/factoring/index.html
http://gilchrist.ca/jeff/factoring/benchmark.html
http://gilchrist.ca/jeff/factoring/pseudoprimes.html
0310デフォルトの名無しさん
2012/05/07(月) 12:11:03.30これより速くないと世界一は無理だな。
yafu-1.31
http://sourceforge.net/projects/yafu/files/1.31/yafu-1.31.zip/download
factor(222222222222222222222222222222222222222222222222222222222222222222222)
0311デフォルトの名無しさん
2012/05/07(月) 12:18:46.290312NAS6 ◆n3AmnVhjwc
2012/05/07(月) 12:22:01.860313デフォルトの名無しさん
2012/05/07(月) 15:28:37.39そのスレのは私自身が書き込んだレスじゃないんですが・・・
だれか貼っつけた人が収拾してください
0314デフォルトの名無しさん
2012/05/07(月) 19:19:13.940315デフォルトの名無しさん
2012/05/07(月) 23:02:24.540316デフォルトの名無しさん
2012/05/08(火) 19:43:04.58韓国のコミュニティサイト「ガセンイドットコム」の掲示板に「台湾人たちが、日本が好きで韓国嫌いな理由は?」とのスレッドが立てられたところ、さまざまな意見が寄せられた。
スレ主は、台湾人は韓国と日本の好き嫌いがはっきり分かれていて、韓国は嫌いだが日本がとても好きだとの記事を紹介した。
スレッドには、その理由について「日本と台湾が島国同士だからではないか」との意見が数多く見られた。
・「台湾や日本は両国とも島国で、韓国を困らせるのが趣味。しかし台湾がいくら困らせてようとしても、韓国はあまりにも強くて賢くて倒れない」
・「島国どうしなので、傾向が似ているから惹かれあうのでは。どちらも内部の問題を外部のせいだとか方便を使う」
・「島国は島国どうし仲良くするのが好き」
・「私たちはできるなら台湾や日本の物を使わないことにしましょう。むしろヨーロッパやアメリカの製品を使用しましょう」
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0508&f=national_0508_070.shtml
◆台湾が韓国嫌いな本当の理由はこれ
韓国は「我々は薄情な裏切り者の日本とは違うから台湾との国交は永遠に断絶しない」と言っておきながら
台湾に公用車として5万台の不人気韓国車を売りつけ、代金を受け取ると同時に、台湾と国交を断絶し中国との国交を結んだ。
しかも韓国の新聞やTVはこれを「韓国の大勝利」「慌てふためく台湾」と馬鹿にして煽り、
ソウルや釜山にあった中華街を様々な規制や嫌がらせで潰し台湾系華僑を追い出した。
その後も韓国は何十年も台湾を攻撃し続けた。
・韓国は、アジアスポーツ大会の主催国争いにおいて、「台湾が権利を譲らなければ大会から台湾を追放する」と恫喝した。
・韓国は、「台湾は国家ではないので参加させない」と国際会議などで台湾を閉め出すなどの行為をしてきた。
・韓国は、台湾が国連やIMFなど国際機関へ加盟することに反対した。
・韓国は、1997年にデフォルトしIMF管理下に入ると台湾に対して「両国間の国家改善のため」といって100億ドルの資金援助を要求した。
0317デフォルトの名無しさん
2012/05/09(水) 06:42:43.87C/C++以外のことも勉強になるな。
でも、スレチだろ。
0318デフォルトの名無しさん
2012/05/10(木) 06:57:15.84しかも同じ内容の箇所をright用とかleft用に書き直しなので、マクロとかで上手くかけないかと思ってます。
func1() {
tree->left = tree->right;
tree->left->left = tree->right->right;
}
func2() {
tree->right = tree->left;
tree->right->right = tree->left->left;
}
たとえば上記のような2つの処理を書かないと駄目なとき、
funcX(A,B) {
tree->A = tree->B;
tree->A->B = tree->B->B;
}
と書いて
funcX(right,left);
funcX(left,right);
とかやりたいのですが、やり方はないでしょうか。元のtreeのメンバを配列にするのは
できないです。
0319デフォルトの名無しさん
2012/05/10(木) 07:57:24.580320デフォルトの名無しさん
2012/05/10(木) 07:58:13.70例えばこんな手はあるぞ。
struct tree {
type * data;
struct tree * left;
struct tree * right;
};
↓
struct tree {
type * data;
struct tree * sides[2];
};
enum {Left, Right};
これなら、
funcX(int a1, int a2)
{
tree->sides[a1] = tree->sides[a2];
}
みたいに書いて
funcX(Right, Left);
みたいに書けるぞ。
0321デフォルトの名無しさん
2012/05/10(木) 08:16:07.85が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0322デフォルトの名無しさん
2012/05/10(木) 08:29:50.72行の短さも考慮すると、
コードが大量に出てくるこの板を、携帯で読んでるのかね。
バカじゃないの。
0323デフォルトの名無しさん
2012/05/10(木) 08:33:41.350324デフォルトの名無しさん
2012/05/10(木) 08:34:47.700325デフォルトの名無しさん
2012/05/10(木) 08:52:53.61>が 多い。それで回答者が逆質問をしたり
>悪 口を言ったりする。それを前もって思
>い 描く力が絶望的に欠如してるに違いない。
>ス ーパーハッカーだけが意図を理解できる。
>レ アなそういう神が颯爽と登場する予感。
0326デフォルトの名無しさん
2012/05/10(木) 08:54:21.11template <bool Swap>
struct LR {
Tree* operator()(Tree* parent) {
return Swap ? parent->right : parent->left;
}
};
template <bool Swap>
void funcX() {
LR<Swap> Left;
LR<!Swap> Right;
Left(tree) = Right(tree);
Left(Left(tree)) = Right(Right(tree));
}
メンバ変数ポインタを使ってみたりとか
template <bool Swap>
void funcX()
Tree* Tree::*left = Swap ? &Tree::right : &Tree::left;
Tree* Tree::*right = Swap ? &Tree::left : &Tree::right;
tree->*left = tree->*right;
tree->*left->*left = tree->*right->*right;
}
0327デフォルトの名無しさん
2012/05/10(木) 09:05:47.43下は書き間違いが起こりやすそう、最適化が効きにくそうで微妙かも。
0328デフォルトの名無しさん
2012/05/10(木) 11:17:15.73class Tree {Tree* right; Tree* left;}
bool使ったTemplateは複雑な条件に対応できにくそうで、配列はメンバを書き換えないと駄目なのでむりです。
そこでdo {}while(0)のマクロを使って
#define macro1(right, left) do { \
t-> ##right = s-> ##left; \
} while (0)
とかで書きました。
0329デフォルトの名無しさん
2012/05/10(木) 11:47:52.240330デフォルトの名無しさん
2012/05/10(木) 11:56:48.21http://codepad.org/pMp2PuSI
0331デフォルトの名無しさん
2012/05/11(金) 01:59:16.78すごい
0332デフォルトの名無しさん
2012/05/11(金) 02:26:59.71と思うほうが、すごい
0333デフォルトの名無しさん
2012/05/11(金) 06:15:16.110334デフォルトの名無しさん
2012/05/11(金) 06:27:13.960335デフォルトの名無しさん
2012/05/11(金) 06:58:09.410336デフォルトの名無しさん
2012/05/11(金) 07:42:00.96その場合、マップが広いとやたら長くなりそうなんですが…
0337デフォルトの名無しさん
2012/05/11(金) 15:12:33.62入社4年でなんとか、使えるようにはなったんですが
未だに彼女が作れません。
本当に作れるんですかね?
0338デフォルトの名無しさん
2012/05/11(金) 16:26:08.780339デフォルトの名無しさん
2012/05/11(金) 16:29:20.43つ OpenGL
0340デフォルトの名無しさん
2012/05/11(金) 17:13:35.43class Kanjo{};
みたいなクラスを作って、
Kanjo misaki;
0341デフォルトの名無しさん
2012/05/11(金) 18:45:36.36for_each(v.begin(), v.end(), do_something());
0342デフォルトの名無しさん
2012/05/11(金) 21:04:06.880343デフォルトの名無しさん
2012/05/11(金) 21:25:17.150344デフォルトの名無しさん
2012/05/11(金) 23:31:57.68いい方法はありますか?
http://codepad.org/S13HXRbC
macro "MAKE_VAR" passed 3 arguments, but takes just 2
をtypedef以外でなんとかしたい、ということです
よろしくお願いします
0345デフォルトの名無しさん
2012/05/11(金) 23:33:40.70typedefしろ
0346デフォルトの名無しさん
2012/05/11(金) 23:39:43.36即レスありがとうございます
おとなしくtypedefすることにします
0347デフォルトの名無しさん
2012/05/12(土) 07:50:52.50あるキーワードが与えられると、それに対応する関数を実行するというプログラムがあります。
以下のような、関数ポインタとキーワードがセットになった配列で管理されています。
struct { void (*pFunc)(); char keyword[256]; } funcTable =
{
{ &FuncApple, "APPLE", },
{ &FuncOrange, "ORANGE", },
{ &FuncLemon, "LEMON", },
};
さて、これを可能な限りクラスに置き換えたいと思います。
Fruitクラスを親として、Apple、Orange、Lemonといった子クラスを用意したのですが、
これを配列に収めるにはどうしたら良いでしょうか。
もちろん、ifで1つ1つ分岐させて、それぞれについて new を記述すれば今の自分にも出来るのですが
子クラスの種類が増えると面倒くさそうな気がします。
0349デフォルトの名無しさん
2012/05/12(土) 08:16:02.53現状こんな感じ。
Match()は、キーワードマッチをする関数だと思ってほしい。
//funcTableをなめる
for(int i=0; i<sizeof(funcTable)/sizeof(funcTable[0]); ++i)
{
//キーワードマッチしたら、該当の関数を実行
if ( Match ( inputKeyword, funcTable[i].keyword ) )
{
funcTable[i].pFunc( ); //←関数ポインタ
break;
}
}
この関数ポインタの部分を、なんとか出来ないかなって。
0350デフォルトの名無しさん
2012/05/12(土) 09:13:54.910351デフォルトの名無しさん
2012/05/12(土) 09:30:26.44普通にif文で書くなら、
Fruit *f;
if (条件1) f = new Apple();
else if (条件2) f = new Orange();
else if (条件3) f = new Lemon();
:
:
f->Hoge();
という感じになると思うんだけど、
数が増えるといちいちifで書いてられないので、何かスマートな方法が無いかなと。
0352デフォルトの名無しさん
2012/05/12(土) 09:54:28.360353デフォルトの名無しさん
2012/05/12(土) 10:27:51.24そういうものかなー?
1人で考えてると何が自然なのか分からなくなってくるね(´・ω・`)
ただまあ、1つの条件式(キーワード)つき、複数の関数ポインタをセットしなきゃならないような場合、
例えば初期化処理と、ルーチン本体と、終了化処理などがある場合だと、全部書かなきゃならないのは不便かも?
0354デフォルトの名無しさん
2012/05/12(土) 10:38:01.60で、初期化が必要だったりしたらクラスにしてメンバー関数にするとか。
そういうアプローチはオブジェクト指向とは違うけれど、自由度は高いんじゃね。
0355デフォルトの名無しさん
2012/05/12(土) 10:51:15.710356デフォルトの名無しさん
2012/05/12(土) 11:03:47.86マジ推敲しなおせや
0357デフォルトの名無しさん
2012/05/12(土) 11:31:53.82>>354
実際に関数ポインタを書かなきゃならないのは変わらないけど、
それを構造体にまとめることで、外側(対応表)に出る情報を抽象的&減らそうってアプローチね?
>>355
うん。それをどうしたら実現できるかなって。
>>356
詳しく。
0358デフォルトの名無しさん
2012/05/12(土) 12:02:31.53意味分からんです
>>349
>> この関数ポインタの部分を、なんとか出来ないかなって。
typedefするぐらいです
>>351
349の内容と違いますよね
線形探索が嫌なら適当なコンテナにでも詰め込めばいいです
>>357
>>347を移植するのに、Factory使う人はいないですし
数ポインタの部分を、なんとかしたかったのでは?
0359デフォルトの名無しさん
2012/05/12(土) 12:24:11.75std::map<std::string, std::function> でおしまいな話じゃないの?
(std::function が使えないなら boost::function で。)
0360デフォルトの名無しさん
2012/05/12(土) 19:59:39.29>さて、これを可能な限りクラスに置き換えたいと思います。
IDが無いからどれが質問主のレスなのか追いづらいんだが
もともとの要点は関数を書いているところをクラスに置き換えたいって話だよね?
クラスインスタンスを返す関数にすれば同じ意味になるんじゃない
struct { Fruit* (*pFunc)(); char keyword[256]; } funcTable =
{
{ &Apple::StaticCreateInstance, "APPLE", },
{ &Orange::StaticCreateInstance, "ORANGE", },
{ &Lemon::StaticCreateInstance, "LEMON", },
};
実際はmap使うなり文字列を定数化するなり効率化した方がいいと思うけどね
0361デフォルトの名無しさん
2012/05/12(土) 20:01:59.411位 イラン
2位 パキスタン
3位 北朝鮮
4位 イスラエル
5位 ロシア
6位 韓国 ←←←←←←←←←←←
最も評価の高い国
1位 日本
2位 ドイツ
3位 カナダ
4位 イギリス
5位 中国
6位 フランス
BBC世界世論調査2012
http://www.globescan.com/images/images/pressreleases/bbc2012_country_ratings/2012_bbc_country%20rating%20final%20080512.pdf
0363デフォルトの名無しさん
2012/05/13(日) 11:08:18.64下記ページを参考にして、cpp内にvoid Dofind()という関数を作ったのですが、
WIN32_FIND_DATA fd;
HANDLE hFind;
などがC2065定義されていない識別子です。とエラーが発生してしまいます。
下記ページ記載の関数以外に何かを定義しておく必要があるのでしょうか?
http://nienie.com/~masapico/api_FindFirstFile.html
0364デフォルトの名無しさん
2012/05/13(日) 11:19:42.510365デフォルトの名無しさん
2012/05/13(日) 11:27:06.30windows.hをインクルードしてあげる必要があるんですね。
ありがとうございました
0366デフォルトの名無しさん
2012/05/13(日) 15:14:15.22main.cpp
void Reset();
reset.cpp
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}
こうやってるんですが、定義されていない識別子です。と出てしまいます
ヘッダはちゃんと記入してあります
0367デフォルトの名無しさん
2012/05/13(日) 15:24:31.98.cpp に宣言だけ書くのはおかしいしヘッダがちゃんとしてても #include してなけりゃ意味が無い。
エラーも Reset について出てるのか SRand について出てるのか・・・
変に省略してあるようで状況がよくわからん。
内容はなるべく省略せずに、エラーメッセージはそのままコピペしろ。
0368デフォルトの名無しさん
2012/05/13(日) 15:36:54.96すみません、エラーは
a[0] = SRand (12);
のところで「'a' : 定義されていない識別子です。」と出ました
main.cpp
#include "reset.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK );
void Reset();}
reset.h
void Reset();
reset.cpp
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}
ちゃんと書くとこんな感じです
0369デフォルトの名無しさん
2012/05/13(日) 15:41:50.66#include "reset.h"//これ忘れてる?
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}
0370デフォルトの名無しさん
2012/05/13(日) 16:36:17.89a は直前で宣言されてるし、その内容が正確だとすると main.cpp でも WINAPI やら
DxLib やらでエラー出るだろうし、まだ状況が伝わってこない。
0371デフォルトの名無しさん
2012/05/13(日) 16:44:31.830372デフォルトの名無しさん
2012/05/13(日) 23:51:10.830373デフォルトの名無しさん
2012/05/14(月) 06:19:32.560374デフォルトの名無しさん
2012/05/14(月) 06:23:51.80・mainの最後のvoid
・なんでカンマで文をつなげる
エラーの出るソースコピペしてない?
0375デフォルトの名無しさん
2012/05/14(月) 08:26:46.63初心者にはよくあること
0376デフォルトの名無しさん
2012/05/14(月) 09:44:23.860377デフォルトの名無しさん
2012/05/14(月) 21:39:34.19つまらんツッコミですまんが、その3つ自体は文法上は問題ないじゃん
(windows.hをincludeしてないからコンパイルエラーになるけど)
0378デフォルトの名無しさん
2012/05/14(月) 22:09:10.68いや、voidはエラーになるよ。
0379デフォルトの名無しさん
2012/05/14(月) 22:10:19.45ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK );
void Reset();}
↑ void Reset();ってなんだよ
関数実行するなら Reset();単体だろ
0380デフォルトの名無しさん
2012/05/14(月) 22:19:09.45>>279は優秀だな
84点くらいはやろうか
それに引き換えそれ以前のアホは0点んだ0点
味噌汁でツラ洗って出直してこい
0381デフォルトの名無しさん
2012/05/14(月) 22:19:18.00なんてエラーになるの?ただの関数宣言で通るんじゃないの?
0382デフォルトの名無しさん
2012/05/14(月) 22:23:33.690383デフォルトの名無しさん
2012/05/14(月) 22:32:04.96なんねーよ。
0384デフォルトの名無しさん
2012/05/14(月) 22:33:30.77ただの宣言を定義だといってエラーにするコンパイラがあるのか?
コンパイラの名前とバージョンを晒せ。
0385368
2012/05/15(火) 00:38:37.67ありがとうございました()
0386デフォルトの名無しさん
2012/05/15(火) 00:41:57.310387デフォルトの名無しさん
2012/05/15(火) 00:46:30.07オイオイ
こんなのに笑われてんぞw アホ共ww
0388デフォルトの名無しさん
2012/05/15(火) 07:42:39.650389デフォルトの名無しさん
2012/05/15(火) 09:27:11.10> ありがとうございました()
なんて使ってる368が一番の基地外ゴミカスだ
マジ本人だったら最悪だろこいつ
もう二度と来なくていいんじゃね?
0390デフォルトの名無しさん
2012/05/15(火) 09:35:43.69言語仕様そのものの欠陥でもある
0391デフォルトの名無しさん
2012/05/15(火) 09:38:22.360392デフォルトの名無しさん
2012/05/15(火) 10:25:13.930393デフォルトの名無しさん
2012/05/15(火) 11:31:23.840394デフォルトの名無しさん
2012/05/15(火) 11:47:10.58俺もたまにやる
0395デフォルトの名無しさん
2012/05/15(火) 12:01:21.800396デフォルトの名無しさん
2012/05/15(火) 12:14:51.0945,089件 609,282,032円 (5月14日入金確認分まで)
http://www.chijihon.metro.tokyo.jp/senkaku_kifu.htm
送金方法:
http://www.chijihon.metro.tokyo.jp/senkaku.htm
0397デフォルトの名無しさん
2012/05/15(火) 12:42:11.710398デフォルトの名無しさん
2012/05/21(月) 20:03:43.48子クラスの宣言をマクロにしちゃうのってアリ?
#define CHILD(T) class T :public ParentClass { 〜 }
って感じで。もしくは他に楽に書ける方法ある?
0399デフォルトの名無しさん
2012/05/21(月) 20:16:43.61(自称)プロは忌避するだろうけど
0400デフォルトの名無しさん
2012/05/21(月) 20:25:12.12ありがとう、ちょっと調べてみる。
0401デフォルトの名無しさん
2012/05/22(火) 01:37:23.30マクロだと改行がメンドイから可変部をマクロ定義した上で #include するファイルを作ったほうが
いいかもしれない。
0402デフォルトの名無しさん
2012/05/22(火) 03:28:00.95日本語で
0403デフォルトの名無しさん
2012/05/22(火) 03:43:13.910404デフォルトの名無しさん
2012/05/22(火) 03:53:21.620405デフォルトの名無しさん
2012/05/22(火) 04:20:11.91理解できないのは、想像力が足りないから。
0406デフォルトの名無しさん
2012/05/22(火) 04:43:13.850407デフォルトの名無しさん
2012/05/22(火) 04:46:15.730408デフォルトの名無しさん
2012/05/22(火) 04:48:01.070409デフォルトの名無しさん
2012/05/22(火) 04:58:18.35include駆使した効率的なコードとやらを
0410デフォルトの名無しさん
2012/05/22(火) 05:09:01.740411デフォルトの名無しさん
2012/05/22(火) 05:10:15.36メンドイといいつつ結局マクロなんですね
> #include するファイルを作ったほうが
> いいかもしれない。
直接書いても別ファイルに書いても書く内容に変わりはないですよね
0412デフォルトの名無しさん
2012/05/22(火) 05:10:52.27class CHILD : :public ParentClass { // \ で繋ぐ必要も無いし
// 行末コメントも使い放題
// ...
// コンパイルエラーへの対処もしやすい
};
// Childs.h
#define CHILD ChildA
#define ...
include "ChildTemplate.h
#define CHILD ChildB
#define ...
#include "ChildTemplate.h
#define CHILD ChildC
#define ...
#include "ChildTemplate.h
#define CHILD ChildD
#define ...
#include "ChildTemplate.h
0413デフォルトの名無しさん
2012/05/22(火) 05:16:21.41想像もできないのか?
空行すら入れられないし、行末にコード追加も出来ないし
デバッグで#if 0も不可なんだぞ。
別ファイルにすれば、「普通のコード」を書くだけだろ
個別に変えるシンボル名を#defineしてから#includeするだけ。
「普通のコード」だから、必要ならば#ifdef系の条件コンパイルも出来る。
当然だけど、#includeは複数回可能だし。
0414デフォルトの名無しさん
2012/05/22(火) 05:18:37.44「関数形式マクロ」と「単純置換のマクロ」があることはご存知?
0415デフォルトの名無しさん
2012/05/22(火) 05:22:34.17template <int U>class CHILD:public ParentClass{〜};
typedef CHILD<0> A;
typedef CHILD<1> B;
これで十分じゃん?
0416デフォルトの名無しさん
2012/05/22(火) 05:25:16.120417デフォルトの名無しさん
2012/05/22(火) 05:32:49.01補完効かなそうだな
0418デフォルトの名無しさん
2012/05/22(火) 06:42:42.020419デフォルトの名無しさん
2012/05/22(火) 07:14:44.290420デフォルトの名無しさん
2012/05/22(火) 07:15:07.970421デフォルトの名無しさん
2012/05/23(水) 00:22:36.08Borland C++で5年ほど前にコンパイルできていたものを、先日久しぶりにビルドを試したらエラーが出て失敗してしまいました
エラー内容はE2134・E2139・W8070などが出ましたが、ソースを見る限り不審な点を見つけられませんでした
なにぶん昔の話なので覚えていないのですが、多少のエラーなら無視して強引にビルドしてしまうような方法を使ったような…
強制ビルドするような方法があったらご教授ください
よろしくお願いします
0422デフォルトの名無しさん
2012/05/23(水) 02:41:03.610423デフォルトの名無しさん
2012/05/23(水) 02:54:39.32エラーを修正してビルドせよ。
強制したいならエラー部分を手動で削除。
0424デフォルトの名無しさん
2012/05/23(水) 02:58:54.38が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0425デフォルトの名無しさん
2012/05/23(水) 04:12:24.080426デフォルトの名無しさん
2012/05/23(水) 05:07:26.75そうですか、ありがとうございました
…だとすると、このexeどうやって生成したんだろう…謎だ…
0427デフォルトの名無しさん
2012/05/23(水) 05:26:24.59修正履歴も探ってみなー
0428デフォルトの名無しさん
2012/05/23(水) 08:11:39.050429デフォルトの名無しさん
2012/05/23(水) 08:58:38.010430デフォルトの名無しさん
2012/05/23(水) 13:33:14.915年前にビルドした時とOSとかの環境は変わってない?
変わってないなら5年前もエラーが出たはずだろ
0431デフォルトの名無しさん
2012/05/23(水) 17:54:15.340432デフォルトの名無しさん
2012/05/23(水) 17:57:31.01あほかっ!
0433デフォルトの名無しさん
2012/05/23(水) 18:07:00.05それを反映させなきゃ変化はないよねー
0434デフォルトの名無しさん
2012/05/23(水) 18:24:01.95ねーよww
酒じゃあるまいし
0435デフォルトの名無しさん
2012/05/23(水) 19:19:57.80なんかのエロゲーを遊んだあとじゃないと動かないアプリ
とかあったよ
0436デフォルトの名無しさん
2012/05/23(水) 20:34:21.830437デフォルトの名無しさん
2012/05/23(水) 20:42:27.200438デフォルトの名無しさん
2012/05/23(水) 21:13:18.66何故か更新されなかったというのがあったな。
翌日ビルドしたら通った。
0439デフォルトの名無しさん
2012/05/24(木) 00:12:18.27ビルドできないと反日悩む馬鹿なら知っている。
0440デフォルトの名無しさん
2012/05/24(木) 16:04:41.11俺か
0441デフォルトの名無しさん
2012/05/24(木) 17:08:36.46普段の書き込み内容がわかる誤変換だなw
0442デフォルトの名無しさん
2012/05/30(水) 09:35:09.01呼び出し側で毎回指定する以外の方法で、実装することは可能でしょうか。
もしくは同等の機能でも構いません。
例えば別のどこかでLog()という関数が定義されてるとして、
main.cpp内でLog()を呼んだとき、このLog()側から「main.cpp」や行番号という情報を扱えるか、ということです。
もちろんLog(__FILE,__LINE__,〜) とやれば済むのですが、あちこちで使う場合ちょっと面倒かなと。
0443デフォルトの名無しさん
2012/05/30(水) 09:51:08.36つ[マクロ]
0444デフォルトの名無しさん
2012/05/30(水) 10:01:41.44こうやるとか
#define Log(foo) _Log(__FILE__, __LINE__, foo)
void _Log(char *file, int line, char *foo){ /* ... */ }
0445デフォルトの名無しさん
2012/05/30(水) 10:09:40.65出来た! ありがとう!
組み込みマクロが展開されるタイミングを勘違いしてたよ。
試しもせずに先入観で否定するのは良くないね。反省。
そして今の環境だと可変長引数のマクロ関数には対応してないようだ(´・ω・`)
必要なときにだけsprintfするか。
0446デフォルトの名無しさん
2012/05/30(水) 10:58:16.900447デフォルトの名無しさん
2012/05/30(水) 12:57:10.100448デフォルトの名無しさん
2012/05/30(水) 12:59:54.880449デフォルトの名無しさん
2012/05/30(水) 23:10:41.700450デフォルトの名無しさん
2012/06/01(金) 02:18:27.71人に説明するために、この原因はないです。この原因はないです。って一つ一つ整理してたら
ループ内で一要素分だけ動的に確保したメモリをオーバーランしてたことに気づく
結果おかげさまで解決しました、ありがとうございました
0451デフォルトの名無しさん
2012/06/01(金) 02:20:30.080452デフォルトの名無しさん
2012/06/01(金) 12:07:30.520453デフォルトの名無しさん
2012/06/01(金) 12:49:10.91int a:だけだと宣言されていないと出てしまい、使い方がイマイチ分からないです
0454デフォルトの名無しさん
2012/06/01(金) 13:06:27.01コードとエラーメッセージ晒せ。
0455デフォルトの名無しさん
2012/06/01(金) 13:38:30.61public でもつけとけ。
こんな質問する程度のお前がが作るソフトに継承、カプセル化、ポリモーフィズムも
関係ないだろうからw
0456デフォルトの名無しさん
2012/06/01(金) 14:35:26.380457デフォルトの名無しさん
2012/06/01(金) 14:37:51.79お前、ガガ?
0458デフォルトの名無しさん
2012/06/01(金) 14:44:35.550459デフォルトの名無しさん
2012/06/01(金) 17:04:10.61C#でいいとおもうよ。手軽だし
0460デフォルトの名無しさん
2012/06/01(金) 17:05:11.790461デフォルトの名無しさん
2012/06/01(金) 17:09:18.34本格的なものを作りたいんですよ
C#みたいな、お遊びは時間の無駄じゃないですか
0462453
2012/06/01(金) 17:14:17.02煽りはお決まりなんでしょうか?ともかくありがとうございます
0463デフォルトの名無しさん
2012/06/01(金) 17:29:32.00逆だ。時間の有効になる。
0464デフォルトの名無しさん
2012/06/01(金) 17:31:23.19本格的なものってなんぞ
0465デフォルトの名無しさん
2012/06/01(金) 17:49:07.510467デフォルトの名無しさん
2012/06/01(金) 17:58:50.20人様にお金を払って頂けるようなもの
0468デフォルトの名無しさん
2012/06/01(金) 18:41:09.74まずはベクターあたりに載るのを目指したらどうだね
0469デフォルトの名無しさん
2012/06/01(金) 18:47:56.020470デフォルトの名無しさん
2012/06/01(金) 19:04:02.140471デフォルトの名無しさん
2012/06/02(土) 05:56:20.220472デフォルトの名無しさん
2012/06/02(土) 07:19:16.510473デフォルトの名無しさん
2012/06/02(土) 09:27:26.990474デフォルトの名無しさん
2012/06/02(土) 13:45:35.43Windows/VC++10の環境で、libファイルにリソースを埋め込んで使いたいのですが、
LoadResource等の返り値がNULLで、読み込みに失敗していているようです
http://ideone.com/40dyA
こんなコード感じのコードなのですが、原因がわかる方居ませんか?
0475デフォルトの名無しさん
2012/06/02(土) 14:23:58.170476デフォルトの名無しさん
2012/06/02(土) 15:03:56.06あ、そうなんですか……
ありがとうございます
0477デフォルトの名無しさん
2012/06/02(土) 21:11:12.83例えばPHPのマニュアルのようなものです
自分、暫く海外へ行くもので、ネットに接続出来ないかもしれないのでオフラインで確認したいと思いまして
0478デフォルトの名無しさん
2012/06/02(土) 21:33:03.79http://www.geocities.jp/ky_webid/
http://www5c.biglobe.ne.jp/~ecb/index.html
http://nienie.com/~masapico/
http://www.cppll.jp/cppreference/index.html
0479デフォルトの名無しさん
2012/06/02(土) 22:11:54.49ありがとうございます
0480デフォルトの名無しさん
2012/06/02(土) 23:23:13.20C言語で大抵のコンパイラでは、グローバル変数は0で初期化されます。
これは ANSI C の規格で定められているのですか?
0481デフォルトの名無しさん
2012/06/02(土) 23:27:44.500482デフォルトの名無しさん
2012/06/02(土) 23:40:43.620483デフォルトの名無しさん
2012/06/02(土) 23:41:14.43>>481
0484デフォルトの名無しさん
2012/06/03(日) 02:56:06.660485デフォルトの名無しさん
2012/06/03(日) 03:13:32.180486デフォルトの名無しさん
2012/06/03(日) 04:09:06.830487デフォルトの名無しさん
2012/06/03(日) 04:15:17.79何度も作られるものはめんどいので放置。
こういう覚え方で。
まあそういえなくもないが‥‥やはりプログラムのロードやメモリ配置をここで言及するのはいかんのだろうか?
スタック上のものはプログラム開始時に存在しないので初期化はない。
それ以外のものはプログラム開始時に存在し初期化する。
しかしmalloc() で確保した領域はプログラム開始時にあるものではないので初期化しない。
0489デフォルトの名無しさん
2012/06/03(日) 05:38:40.70そんなものつかうのか?
0491デフォルトの名無しさん
2012/06/03(日) 06:21:53.310492デフォルトの名無しさん
2012/06/04(月) 13:45:40.85複数人だと宣言が被ったりするから気をつけないといけないだろうけど、苦cってサイトに控えろって書いてあったから気になった
0493デフォルトの名無しさん
2012/06/04(月) 13:56:10.85でもまあほとんどないだろうから使いたければ自由に
0494デフォルトの名無しさん
2012/06/04(月) 13:58:08.14関数にexturn → 付ける必要無し
変数にexturn → グローバル変数をガンガン使うな
0495デフォルトの名無しさん
2012/06/04(月) 14:24:34.18exturn
exturn
0496デフォルトの名無しさん
2012/06/04(月) 14:32:56.25定期的にメッセージボックスを出すだけのプログラムをかいてみたんですが
これだけだとタスクマネージャーからプロセス終了しないと終了できないので
Shell_NotifyIcon というのを使えばいいといわれたんですが
hWndとm_hIconに設定する値がわかりません…
根本的に使い方がまちがってるんでしょうか…
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
NOTIFYICONDATA notif;
notif.cbSize = sizeof(NOTIFYICONDATA);
notif.hWnd = m_hWnd; // エラー
notif.uID = 0;
notif.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
notif.uCallbackMessage = WM_TRAYICONMESSAGE;
notif.hIcon = m_hIcon; // エラー
lstrcpy(notif.szTip, TEXT("TEST"));
Shell_NotifyIcon(NIM_ADD, ¬if);
while(1) {
MessageBox(NULL, TEXT("test"), TEXT("test"), MB_OK | MB_TOPMOST | MB_SETFOREGROUND);
Sleep(60 * 1000);
}
}
0497デフォルトの名無しさん
2012/06/04(月) 14:35:43.700498デフォルトの名無しさん
2012/06/04(月) 14:47:50.66それだとメッセージボックスがでてるときにしか終了できないですよね…
いつでも終了できるようにしたいんですけど…
0499デフォルトの名無しさん
2012/06/04(月) 15:01:47.46単に追加すればいいってもんじゃないよ
タスクトレイに表示したいアイコンは?
タスクトレイで操作したメッセージは誰が処理するの?
ググればサンプルが出てくるから頑張れ
0500デフォルトの名無しさん
2012/06/04(月) 15:07:35.26数行追加するだけでタスクバーに表示されるのかなと思ってたんですが
イベント関連のことが説明やサンプル読んでもぜんぜん分からないので
そのへんから理解していかないとダメみたいですね…
答えていただいた方ありがとうございました
0501デフォルトの名無しさん
2012/06/04(月) 15:39:19.290502デフォルトの名無しさん
2012/06/04(月) 17:18:43.34この程度のトイプログラムならタイマーイベント使って微妙なタイミングで下手にエンバグするよりシンプルでいいんじゃね
0503デフォルトの名無しさん
2012/06/04(月) 17:38:25.18メッセージボックスが
でていない時には タスクトレイ経由 SYSMENU 〜 終了へ
でている時には メッセージボックスのキャンセルで
こういう条件だとタイマーやスレッドを使いたくなるな
0504デフォルトの名無しさん
2012/06/04(月) 17:51:46.020505デフォルトの名無しさん
2012/06/04(月) 18:03:11.77ちょっと退席してる間にメッセージボックスだらけになるんじゃないか?
0506デフォルトの名無しさん
2012/06/04(月) 18:24:48.76逆にイベント処理を理解すればタイマーも使えるだろ
0507デフォルトの名無しさん
2012/06/04(月) 19:20:05.64つーか、先ずは基礎からと考えて、ウィンドウを一つ出しておく方法で実装してみることをお勧めしたい。
0508デフォルトの名無しさん
2012/06/04(月) 19:27:04.63iが1000になったら表示とかで
0509デフォルトの名無しさん
2012/06/04(月) 19:35:15.80入門サンプル見て勉強しろで終わりだろw
0510デフォルトの名無しさん
2012/06/04(月) 20:48:22.04それエラーになるよ
0511デフォルトの名無しさん
2012/06/04(月) 21:17:40.76正直GUIなんてどうでもいいよな
0512デフォルトの名無しさん
2012/06/04(月) 21:22:36.100513デフォルトの名無しさん
2012/06/04(月) 21:31:17.850514デフォルトの名無しさん
2012/06/04(月) 21:38:55.40VC++ならマウス操作だけで、カッコいいVisualStudioライクのGUIが即できるぞ
0515デフォルトの名無しさん
2012/06/04(月) 21:46:28.83あっちのソースみる限りアルゴリズム自体はそれなりにかけるんじゃないかな
UNIX系で勉強していきなり Windows APIは C++ といってもまったく別言語だよな
大学なんかで習ってるなら Java あたりで GUI 覚えてからの方が普通だしな
0516デフォルトの名無しさん
2012/06/04(月) 22:05:48.33>>501-506
タイマーは使ったことないですけど仕組みは何となくわかります
ループ1回分の処理を別関数に分けて
何秒後にその関数を呼び出すように登録するようなライブラリがあるんですよね…
とりあえずもっとクリティカルなところでつまずいてたので…
そこが解決したらタイマーも使ってみることにします
>>507
別にそれでもいいんですけど現状覚えたのがメッセージボックスだけで…
C++相談室の方でさきに質問したら Shell_NotifyIcon を進められたんです
メッセージボックスを2つ出せれば解決しそうなんですけど
入力待ちをブロックせずに2つ出すことってできるんでしょうか…
>>511
人に頼まれたプログラムなのでGUIの方がいいかなと…
あとVCは完全にはじめてですがGUI自体は Java なら軽く AWT 習いました
理解してるわけではないんですがテンプレの処理とどのメソッドにとんでくるか覚えてるだけですけど
いろいろサイトみてみたんですけど…
Visual C++ は動かすための最小セットが長すぎてすぐに理解できないんですよね><
どこまでがテンプレでどこまでが追加されたコードなのかっていうのが…
GUIのイベント処理理解するための入門サイトみたいなのがあれば知りたいんですけど…
0517デフォルトの名無しさん
2012/06/04(月) 22:24:26.63関数はたった2つ、main関数とコールバック関数(関数名は自由)。
main関数の仕事はたった2つ。
自分自身が何者であるかをOSに登録して無限ループに入るだけ。
これはもう定型文なのでほとんどコピペ。
コールバック関数はOSから呼び出されるたびに、
引数のひとつであるWindow Message(単なる整数)の値に応じて処理を分岐するだけ。
これはイベントドリブン型のプログラムではたいてい同じロジックだから
言語ひとつ知ってれば全部応用できる。
MFCは複雑だけどね。メッセージループがワークフレームの中に隠れてたりするし。
0518デフォルトの名無しさん
2012/06/04(月) 22:52:21.91確かに VC++ で挿入されるテンプレみたら初心者はやる気なくす
俺も最初はそうだった
あと Java は興味あるイベントリスナーだけを登録しておけば
イベント内容に応じて分かりやすい関数名にとばしてくれるからな
イベントディスパッチを自分でやるって違いだけなんだけど
switch 文に見慣れない変数がずらずら並んでると難しく見えるのも分からないでもない
0519デフォルトの名無しさん
2012/06/04(月) 23:04:55.440520デフォルトの名無しさん
2012/06/04(月) 23:11:05.500521デフォルトの名無しさん
2012/06/05(火) 00:01:49.16知り合いとプログラムをつくっているのですが
知り合いが new した int配列を mapの中にいれて、eraseでメモリの開放できているといいます。
私がメモリのリークチェックで確認したところ 未開放の情報が出力されるのですがeraseで本当に削除されるのでしょうか?
それともlist::pop_frontみたくmapの中の要素リストから排除するのみなのでしょうか?
0522デフォルトの名無しさん
2012/06/05(火) 00:07:30.950523デフォルトの名無しさん
2012/06/05(火) 00:13:45.040524デフォルトの名無しさん
2012/06/05(火) 00:50:02.89delete すんな vector 使え。
0525デフォルトの名無しさん
2012/06/05(火) 00:59:44.400526デフォルトの名無しさん
2012/06/05(火) 01:23:19.750527デフォルトの名無しさん
2012/06/05(火) 11:49:21.23何の証拠もなしにできているとほざく知り合いは死ぬべき
0528デフォルトの名無しさん
2012/06/05(火) 12:34:56.25そういうやつがよくわからないバグを生み出す原因だったりするよな
0529デフォルトの名無しさん
2012/06/05(火) 12:39:32.190530デフォルトの名無しさん
2012/06/05(火) 12:45:38.46特定のDLLで開始されているか調べるには
どうしたらいいですか?
開始アドレスをNtQueryInformationThreadで
調べるというのは見つけたのですが、
それが特定のDLLのものか、どう調べれば良いですか?
0531デフォルトの名無しさん
2012/06/05(火) 13:01:09.91DLLからエクスポート関数を列挙して
プロセス内のDLLアドレス+関数の相対アドレス == 開始アドレス
もしくは GetProcAddress(dll,fname) == 開始アドレス で比較したら
分かる・・・かもしれない やったことないけど
0532片山博文MZボット ◆0lBZNi.Q7evd
2012/06/05(火) 13:19:34.630533デフォルトの名無しさん
2012/06/05(火) 13:26:48.510534デフォルトの名無しさん
2012/06/05(火) 14:00:31.87DLLベースアドレス <= 開始アドレス < DLLベースアドレス+DLLサイズで
分かるんじゃね?
0535デフォルトの名無しさん
2012/06/05(火) 14:43:42.23Process Explorerでプロセス内のスレッド一覧見ると
Start Addressに
gdiplus.dll!GdipGetVisibleClipBoundsI+0xad4
firefox.exe+0x1bf9
とか表示されるから、そういう情報を取りたいんだと思う
0536デフォルトの名無しさん
2012/06/05(火) 15:02:11.80が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0537デフォルトの名無しさん
2012/06/05(火) 15:08:37.440538デフォルトの名無しさん
2012/06/05(火) 15:27:53.91>>531 >>532 とりあえず、エクスポート関数に限定して、これを試します。
>>534 DLLベースアドレスの取得方法を教えていただけませんか?
ベースアドレスが衝突してデフォルトでない場合も
取得できるのでしょうか? この方法も試してみたいです。
>>533 >>535さんのおっしゃるとおりです。
dll!func+0xXXXというのは、エクスポートされている関数のアドレスから
0xXXX後にある、エクスポートされてない関数という意味なのですか?
>>536 わかりにくくてすいません。
0539デフォルトの名無しさん
2012/06/05(火) 15:34:38.710540デフォルトの名無しさん
2012/06/05(火) 15:38:56.47ベースアドレスはロードされたDLLの先頭メモリアドレスなので
1プロセス内で衝突することは無い
MODULEENTRY32.modBaseAddr がベースアドレス
MODULEENTRY32.modBaseSize がサイズ
modBaseAddr <= p < modBaseAddr+modBaseSize がDLLのメモリ領域
0541デフォルトの名無しさん
2012/06/05(火) 16:12:31.780542デフォルトの名無しさん
2012/06/05(火) 18:24:38.63ウイルスでも作るのか
0543デフォルトの名無しさん
2012/06/05(火) 18:35:32.140544デフォルトの名無しさん
2012/06/05(火) 18:59:48.46アスペは黙ってろ
0545デフォルトの名無しさん
2012/06/05(火) 19:16:25.380546デフォルトの名無しさん
2012/06/05(火) 19:17:42.890547デフォルトの名無しさん
2012/06/05(火) 19:23:29.120548デフォルトの名無しさん
2012/06/05(火) 21:27:18.21iteratorとconst_iteratorのふたつを用意したところ、エラーになります。
なにがいけないのでしょうか? 環境はVS2010です。begjn()が片方だけならコンパイルは通ります。
class MyContainer
{
public:
template<typename T>
struct iterator_ {
iterator_(T* p) : ptr(p) {}
T* ptr;
};
template<typename T>
struct const_iterator_ {
const_iterator_(const T* p) : ptr(p) {}
const T* ptr;
};
typedef iterator_<MyContainer> iterator;
typedef const_iterator_<MyContainer> const_iterator;
iterator begin() { return iterator(this); }
const_iterator begin() const { return const_iterator(this); }
};
MyContainer x;
MyContainer::const_iterator ix = x.begin();
エラー出力
error C2440: '初期化中' : 'MyContainer::iterator' から 'MyContainer::const_iterator_<T>' に変換できません。
with
[
T=MyContainer
]
コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。
0549デフォルトの名無しさん
2012/06/05(火) 21:48:37.88僕の見た限り、iterator を const_iterator に自動変換するコードはなさそうなのでそれでエラーになってる。
struct const_iterator_ {
const_iterator_(const T* p) : ptr(p) {}
template< typename T > const_iterator_( iterator_< T > const &it ) : ptr( it.ptr ) {}
const T* ptr;
};
これでいいんじゃないかな?
0551デフォルトの名無しさん
2012/06/06(水) 08:26:14.790552デフォルトの名無しさん
2012/06/06(水) 11:46:05.93自分は参照渡しとポインタ渡しは書き方が違うだけでコードは同様と思っていますが
意味が違うと言っている人(ポインタを理解していない?)がいたので質問します
以下のコードに書き方以外の違いはあるのでしょうか?
void hoge::func1(int &p1)
{
p1++;
}
void hoge::func2(int *p1)
{
*p1++;
}
0553デフォルトの名無しさん
2012/06/06(水) 12:00:28.31コードは同様→機能は同様
です
0554デフォルトの名無しさん
2012/06/06(水) 12:04:08.66NULLやポインタ演算を使う場合はポインタを使う
本人じゃないと分からんけど
そういった点でセマンティクスが違うと言ってるのかもしれない
0555デフォルトの名無しさん
2012/06/06(水) 12:04:28.94全く違う。ポインタを理解していないのはあんただ。
前者は内容を更新し、後者はポインタを更新する。
0556デフォルトの名無しさん
2012/06/06(水) 12:09:27.37どっちなんだろうな。
0557デフォルトの名無しさん
2012/06/06(水) 12:12:58.44どっちも結果を捨てているから一緒じゃねぇか。
って突っ込もうと思ったが、ポインタ版は在らぬところを指してしまうからやっぱり拙いかな?
0558530
2012/06/06(水) 12:21:48.86>>539 >>542 とりあえずは、ws2_32.dllの非同期通信スレッドが
他のスレッドに邪魔されないように、優先度を上げようと思っています。
>>540 これで行けそうです。ありがとうございます。
0559デフォルトの名無しさん
2012/06/06(水) 12:22:27.46*p1++; は *(p1++); になるから (*p1)++; って書かないと参照の方と同じ処理にならないよ
0560デフォルトの名無しさん
2012/06/06(水) 12:59:12.13お前大丈夫か?
0561デフォルトの名無しさん
2012/06/06(水) 14:47:40.54言語のインストーラがやたらと重いし時間が掛かるのでいつもmsiexexcexeをタスクマネージャで
一個下の優先度に変えているぜ
マルチコアだと関係ないと思われるかも知れないがそれでもタスクの切り替えの時に何か引っ掛かる
0562デフォルトの名無しさん
2012/06/06(水) 15:55:12.46bool型の変数を本当に1bitで使うことって出来ますかね?
具体的に言うとboolの配列を出来るだけ多く使いたいので、メモリ節約することで単純に宣言した場合の8倍の量使えるように出来ないかな思ったんですが・・・
0563デフォルトの名無しさん
2012/06/06(水) 16:06:14.410564530
2012/06/06(水) 16:19:46.29優先度が顕著に影響しますね。
言語を頻繁にインストールしているのですか?
0565デフォルトの名無しさん
2012/06/06(水) 17:10:27.14そんな事はないけどあるコアを100%使う時に気づいた
100%使うような処理は優先度を一つ落とすべきだと思った
>>562
Proxy Classを使うと実現可能だと思うけど遅いと思うぞ
0567デフォルトの名無しさん
2012/06/06(水) 21:10:51.82new deleteではなくmalloc、コンストラクタ、デストラクタ、freeとやってしまって問題ありますか?
呼び出し忘れの可能性が増えること以外で
0568552
2012/06/06(水) 21:11:06.78慌ててて書き込むとダメですね
要は
func1を p1 = 0;
func2を *p1 = 0;
として結果は同じことを確認したかったのです
0569デフォルトの名無しさん
2012/06/06(水) 21:26:40.20問題ない
デフォルトのoperator newは大抵mallocを使ってる
0570デフォルトの名無しさん
2012/06/06(水) 21:32:58.30では続けて質問・・・
class Hoge
{
public:
int hensu;
Hoge(){hensu = 0;}
}
//
Hoge* hogeP = (Hoge*)malloc(sizeof(Hoge));
hogeP->Hoge();//エラー
hogeP->Hoge::Hoge();//OKっぽい、hensu = 0になっている
上記エラーとOKの差の意味ってなんでしょう?
0571デフォルトの名無しさん
2012/06/06(水) 21:46:04.450572デフォルトの名無しさん
2012/06/06(水) 21:47:15.64配置new
http://ideone.com/ate3L
0573デフォルトの名無しさん
2012/06/06(水) 21:48:31.560574デフォルトの名無しさん
2012/06/06(水) 21:51:11.80初めて見る書き方です。replacement newですかね?勉強してみます
0575デフォルトの名無しさん
2012/06/06(水) 22:08:51.39おいおい変な事を教えるなよ
規格票に従え
0576デフォルトの名無しさん
2012/06/06(水) 22:10:22.34基底クラスのデストラクタ呼び出してくれるのか?よく考えろ
0577デフォルトの名無しさん
2012/06/06(水) 22:13:45.300578デフォルトの名無しさん
2012/06/06(水) 22:15:37.020579デフォルトの名無しさん
2012/06/06(水) 22:26:03.750580デフォルトの名無しさん
2012/06/06(水) 23:48:03.25具体的に
>>576
されるけど、何がよく考えろ?
http://ideone.com/C8PJH
>>578
sizeofが正しいサイズを返さないってこと?
sizeofにはvtblもアラインメントのパディングも反映されるし
mallocの開始アドレスは基本型のアラインメントも保証されてる
>>579
呼び出せるけど、確認してから言ってるの?
http://ideone.com/TKP9g
0581デフォルトの名無しさん
2012/06/06(水) 23:56:44.79>freeしたらちゃんと
というか継承以前にfreeとデストラクタは関係無い
0582デフォルトの名無しさん
2012/06/07(木) 00:18:29.56引数で可変サイズの2次元配列を受け渡すにはどうしたらいいんでしょうか?
int det(int[][] a, int n) {
みたいに2次元配列とサイズをうけとってサイズに応じて計算したいんですけど…
0583デフォルトの名無しさん
2012/06/07(木) 00:29:35.85だれもplacement newの話はしてないんだが・・・
頭おかしい?
0584デフォルトの名無しさん
2012/06/07(木) 00:32:38.67C#のジャグ配列みたいな奴って事?
それじゃポインタのポインタのポインタもしくはポインタのポインタのリファレンスを渡して
行もしくは列方向が伸び縮みするようならreallocもしくはC++ならvectorを使った方がいいね
俺自身はvecctorが常に今の行数と行ごとの列数が簡単に把握出来て好きなんだが
0585デフォルトの名無しさん
2012/06/07(木) 00:33:30.43場合の結果を返せないから
0586デフォルトの名無しさん
2012/06/07(木) 00:34:53.65こういうの?std::vector使った方が良いとは思うけど
http://ideone.com/pspcT
0587デフォルトの名無しさん
2012/06/07(木) 00:36:37.16どの部分に対するレスかも書けないお前の頭がおかしい
0588デフォルトの名無しさん
2012/06/07(木) 00:40:51.82det((int *)a, (sizeof(a) / sizeof(int));
0589デフォルトの名無しさん
2012/06/07(木) 00:53:17.89何でも人のせいにすんなカス
自分の文章を読む能力の不足を棚に上げて偉そうに
0590デフォルトの名無しさん
2012/06/07(木) 00:57:17.14で、結局お前は>>580のアンカ先のうちどれなわけ?
それを書けと言ってるんだが
0591デフォルトの名無しさん
2012/06/07(木) 01:04:38.95>>584,586
C言語の話でしたすいません
>>585
とりあえず配列は READ ONLY で動いてくれれば…
>>588
ためしにしたのプログラムでコンパイルしてみたんですけど a[1][1] でエラーになります
メソッド内で要素にアクセスするにはどうすればいいんでしょうか…
int det(int *a, int n) {
return a[1][1];
}
int main() {
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d\n", det(a));
return 0;
}
0592デフォルトの名無しさん
2012/06/07(木) 01:09:32.39http://ideone.com/tQkZx
やっぱりC++とmalloc/free/reallocを組み合わせるのは気が引けるな
std::vector<std::vector<int> > を使うか自前のクラスを作りたい
0594デフォルトの名無しさん
2012/06/07(木) 01:12:46.86>>586をCにした
http://ideone.com/VazAq
0595デフォルトの名無しさん
2012/06/07(木) 01:29:56.54おーーー この方法で動ききました ほんとにありがとうございます! 助かりました!
int det(int *a, int n) {
return *(a+1 * n + 1);
}
int main() {
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d\n", det((int *)a));
return 0;
}
>>592
int det(int **&a, int n) {
return a[1][1];
}
って書き方試してみたんですけど
printf("%d\n", det((int **)a, 2));
だとコンパイルとおらなくて
int **b = a;
printf("%d\n", det(b, 2));
で無理やり型あわせてわたしてみたらコンパイルできたんですけど動かなかったです
0596デフォルトの名無しさん
2012/06/07(木) 01:45:02.40>>592はC++だよ
0597デフォルトの名無しさん
2012/06/07(木) 01:48:28.56そうなんですけど
Cでも int**& って書き方自体できたので
メソッド中で a[1][1] って書き方でアクセスできれば楽かなって試してみたんですけどダメでした
Cで2次元配列扱うのって結構大変なんですね…
0598デフォルトの名無しさん
2012/06/07(木) 01:52:46.91やめてください
0599デフォルトの名無しさん
2012/06/07(木) 01:56:23.42コンパイラが a[1][1] を *(a+1 * n + 1) のような計算に変換してくれているので
nの部分をコンパイラが認識出来ないとどうしようもない
mainの中で書けるのは int a[2][2] という定義が見えているため
↓のように認識させれば a[1][1] のように書けるけど1次元分以外は固定になってしまう
http://ideone.com/vgeLc
0600デフォルトの名無しさん
2012/06/07(木) 02:09:39.53なるほどです
#define ならできるのはわかるんですけど
配列サイズをちっちゃくしながら再帰的にこのメソッドをよびたいので
変数で可変じゃないと困るんですよね…
ちょっとソースが醜くなるけど
一応やりたいことは >>594 でできそうなのでこれでかいてみます
本当にみなさんありがとうございました
0601デフォルトの名無しさん
2012/06/07(木) 06:55:51.82class Hoge{
private:
int hogehoge;
};
このclassをvectorに4つ格納したいのですがどう記述すればいいのでしょうか
型の宣言がわかりません。
vector<Hoge> array(4)
これじゃだめなんですか?
0602デフォルトの名無しさん
2012/06/07(木) 08:21:09.34class Hoge{
private:
int hogehoge;
};
std::vector<Hoge> array(4);
0603デフォルトの名無しさん
2012/06/07(木) 20:31:48.340604デフォルトの名無しさん
2012/06/07(木) 20:45:19.070605デフォルトの名無しさん
2012/06/07(木) 21:26:18.99だとするとCLIはいつ使うのですか?
0606デフォルトの名無しさん
2012/06/07(木) 21:32:22.18http://d.hatena.ne.jp/itaro3/20110727/1311716477
これ見て考えろや
でもここまでするなら普通にC/C++使えと思う
既存の.NETのリソースを活用したい時だけか
0607デフォルトの名無しさん
2012/06/07(木) 21:33:34.20ありがとうございます!!!!!
0608デフォルトの名無しさん
2012/06/08(金) 17:20:14.46何でこんな記述方法なんだ
0609デフォルトの名無しさん
2012/06/08(金) 17:26:58.790610デフォルトの名無しさん
2012/06/08(金) 17:43:51.53勘違いしてたらごめん、普通な記述方法だと思うけどコレと違うの?
http://ideone.com/ZCwKK
0611デフォルトの名無しさん
2012/06/08(金) 19:07:55.41自明ではないなあ、確かに調べたくなる。
int *p, *q;
なのに
int* [10];。
0612デフォルトの名無しさん
2012/06/08(金) 19:08:13.99http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
0613デフォルトの名無しさん
2012/06/08(金) 19:31:09.430614デフォルトの名無しさん
2012/06/08(金) 20:28:57.23配列のnewは
type* p = new type[n];
なのでクラスのポインタ(type = cls*)なら
cls** p = new cls*[n];
まとめて変数を定義する構文は欠陥品みたいなもんだから使わない方がいい
理解云々より「型 変数,変数;」にならない場合があるシンタックスがキモイ
0615デフォルトの名無しさん
2012/06/08(金) 23:18:54.250616デフォルトの名無しさん
2012/06/09(土) 00:09:07.32聞いたことないわ
脳内か?
0617デフォルトの名無しさん
2012/06/09(土) 01:31:56.330618デフォルトの名無しさん
2012/06/09(土) 06:33:12.18int* p, q;
どっちが意図通りか分かりにくい
0619デフォルトの名無しさん
2012/06/09(土) 09:22:15.62C++言語設計者曰く
Bjarne Stroustrup's C++ Style and Technique FAQ
http://www2.research.att.com/~bs/bs_faq2.html#whitespace
>A ``typical C programmer'' writes ``int *p;''
>A ``typical C++ programmer'' writes ``int* p;''
>...
>Stick to one pointer per declaration and always initialize variables and the source of confusion disappears.
0620デフォルトの名無しさん
2012/06/09(土) 10:32:50.57構文を変えようとしたけどCユーザーの反発とか色々あって放置に決めたっていう。
0621デフォルトの名無しさん
2012/06/09(土) 11:10:58.17どっちがどうなのかさっぱりだ
基本Cな俺は上で記述したくなるけど
0622デフォルトの名無しさん
2012/06/09(土) 12:27:10.290623デフォルトの名無しさん
2012/06/09(土) 13:20:15.630625デフォルトの名無しさん
2012/06/09(土) 14:35:41.84ヤッパむかつくな
コードをみせてくれ。話はそれからだ。
0627デフォルトの名無しさん
2012/06/09(土) 15:46:21.130628デフォルトの名無しさん
2012/06/09(土) 21:11:59.640629デフォルトの名無しさん
2012/06/09(土) 21:47:37.670630デフォルトの名無しさん
2012/06/09(土) 23:03:37.47別の事情でstring型は使うことができないんです
初歩的な質問ですいませんがよろしくお願いします
0631デフォルトの名無しさん
2012/06/09(土) 23:14:05.730x80〜 とかその辺だった記憶
0632デフォルトの名無しさん
2012/06/09(土) 23:21:18.75回答有り難うございます
文字列で場合分けしたいので一文字じゃダメなんです……
でも参考になりました ありがとうございます
別で聞いた所strcmp?とかいうもので解決するそうです
もう少し頑張ってみます
0633デフォルトの名無しさん
2012/06/09(土) 23:59:18.06その2バイト文字列の文字コードでマルチバイト文字の1バイト目であることを示す値が出てくるかどうかで判断するって話だろ
0634デフォルトの名無しさん
2012/06/10(日) 00:17:31.990635デフォルトの名無しさん
2012/06/10(日) 00:24:29.070636デフォルトの名無しさん
2012/06/10(日) 05:57:32.60扱うコードは
SJIS?
UNICODE?
0637デフォルトの名無しさん
2012/06/10(日) 06:03:28.190638デフォルトの名無しさん
2012/06/10(日) 11:41:33.270639デフォルトの名無しさん
2012/06/10(日) 12:11:18.15ってなんて読むの?
バカジャネ ストラップ
でいいの?
0640デフォルトの名無しさん
2012/06/10(日) 12:18:44.540641デフォルトの名無しさん
2012/06/10(日) 12:22:38.710642デフォルトの名無しさん
2012/06/10(日) 16:57:25.35C++における関数や関数の呼び出しにおける変数の扱いについてです。
関数や関数内にて宣言している静的な変数は、関数を呼び出すたびに実行に必要なメモリ領域を確保しているのでしょうか?
関数、変数ともにstatic、inlineなどがついていない関数を前提とします。
0643デフォルトの名無しさん
2012/06/10(日) 17:06:46.76>関数や関数内にて宣言している静的な変数
>関数、変数ともにstatic、inlineなどがついていない
矛盾しとるがや。
0644デフォルトの名無しさん
2012/06/10(日) 17:34:56.98すみません
つまりこういうことです。
int func()
{
int var;
}
ここでのfuncやvarは実行されるたび確保されるのでしょうか?
0645デフォルトの名無しさん
2012/06/10(日) 17:38:33.590646デフォルトの名無しさん
2012/06/10(日) 17:51:53.23ありがとうございます。
早速調べさせていただきます。
0647デフォルトの名無しさん
2012/06/10(日) 18:04:43.040648デフォルトの名無しさん
2012/06/10(日) 18:36:02.030649デフォルトの名無しさん
2012/06/10(日) 19:02:24.840650デフォルトの名無しさん
2012/06/10(日) 19:17:56.41かかわらないほうが吉
0651デフォルトの名無しさん
2012/06/10(日) 19:40:35.310652デフォルトの名無しさん
2012/06/10(日) 19:51:54.42そうなると再起関数の部分とかで矛盾が発生するとか考えればわかるけど
0653デフォルトの名無しさん
2012/06/10(日) 20:03:12.960654デフォルトの名無しさん
2012/06/10(日) 20:09:06.450655デフォルトの名無しさん
2012/06/10(日) 21:02:46.39悪い質問者じゃないんだけどさ・・・
関数内での変数ってstatic明示的に書かない限りAuto変数だと思っていた
kwsk教えてエロい人
0656デフォルトの名無しさん
2012/06/10(日) 21:05:14.170657デフォルトの名無しさん
2012/06/10(日) 21:12:59.86ごめんなさい、なにか勘違いしていました。
0658デフォルトの名無しさん
2012/06/11(月) 01:56:38.09Qは指パッチンで何でもできるからな。
0659デフォルトの名無しさん
2012/06/11(月) 03:32:25.29気のせいだろ?このスレにしてもQにしてはレベルが低い、というかQならとうに知ってるはず。
0660デフォルトの名無しさん
2012/06/11(月) 03:35:58.640661デフォルトの名無しさん
2012/06/11(月) 04:59:12.550662デフォルトの名無しさん
2012/06/11(月) 10:25:25.110663デフォルトの名無しさん
2012/06/11(月) 15:13:36.00今のところ、Borland C++ Compiler、BCC Developerを使おうと思っています
0664デフォルトの名無しさん
2012/06/11(月) 15:30:43.850665デフォルトの名無しさん
2012/06/11(月) 15:40:13.46他にも(使用環境について)何か必要でしょうか?
0666デフォルトの名無しさん
2012/06/11(月) 15:55:48.000667デフォルトの名無しさん
2012/06/11(月) 16:33:13.06無駄にはならん
0668デフォルトの名無しさん
2012/06/11(月) 16:46:17.500669デフォルトの名無しさん
2012/06/11(月) 17:03:17.01Linuxメインでない限りmingw,cygwin使うのはアホだし
VC++除けば Digital Mars C/C++ Compilerくらいか?
0670デフォルトの名無しさん
2012/06/11(月) 18:56:50.56簡単なWindowsアプリをお手軽に作ってみたいというならVC++で良いと思う。
C言語を純粋に勉強したいというなら、gcc(Mingw,cygwin)+eclipse(CDT)の方が良いと思う。
VC++のなんとなく嫌な所はC言語としては、Microsoftの方言があると思える所。
GCCの嫌な所は、Windowsアプリを作るのが面倒くさい(という印象)がある所。
「Windowsのアプリを作り易い」ということは、「WindowsのAPIを簡単に使える」という話だから、
C言語の本体とは直接関係ないけどね。
0671デフォルトの名無しさん
2012/06/11(月) 19:53:51.530672デフォルトの名無しさん
2012/06/11(月) 20:01:11.290673デフォルトの名無しさん
2012/06/11(月) 21:01:39.16C++は規格合致してない方言まみれだけど
Cは89のままで止まってて、かなり素直だと思うんだけど^^;
むしろ99の機能を一部取り入れてるgccの方が独自拡張多くない?
0674デフォルトの名無しさん
2012/06/11(月) 21:26:55.490675デフォルトの名無しさん
2012/06/11(月) 21:30:58.92http://msdn.microsoft.com/ja-jp/library/34h23df8.aspx
0676デフォルトの名無しさん
2012/06/11(月) 21:34:19.970677デフォルトの名無しさん
2012/06/11(月) 21:54:35.82http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html
0678デフォルトの名無しさん
2012/06/11(月) 22:15:19.79ふーん、古いページだけれどもその当時の時点でいろいろあったんだ。
>配列変数をコピーする。
は標準じゃなかったっけ。
0679デフォルトの名無しさん
2012/06/11(月) 22:41:43.300680デフォルトの名無しさん
2012/06/11(月) 23:00:20.26今の一覧はこれ
http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html
0681デフォルトの名無しさん
2012/06/11(月) 23:15:12.86そだった。なるほど。
0682デフォルトの名無しさん
2012/06/11(月) 23:20:40.950683デフォルトの名無しさん
2012/06/12(火) 03:10:00.730684デフォルトの名無しさん
2012/06/12(火) 07:10:39.820685663
2012/06/13(水) 14:20:05.80まずはVisual C++ 2010 Express使ってみて
不満があるようならg++など順番に変えていこうと思います
(cygwinのインストールはしているのですが、使い方があまり分かっていないので勉強する必要が・・・)
0686デフォルトの名無しさん
2012/06/14(木) 12:47:46.330687デフォルトの名無しさん
2012/06/14(木) 15:15:04.810688デフォルトの名無しさん
2012/06/14(木) 19:47:41.13使っているソフトはVS2010です
0689デフォルトの名無しさん
2012/06/14(木) 20:00:18.120690デフォルトの名無しさん
2012/06/14(木) 20:01:49.08普通の起動
CreateProcess
エクスプローラーと同じようにファイルを開く場合
ShellExecute
コマンド実行(起動したプロセスが終わるまで待機)
system
http://msdn.microsoft.com/ja-jp/library/277bwbdz(v=vs.71).aspx
0691デフォルトの名無しさん
2012/06/14(木) 23:11:18.71#include <string>
using namespace std;
int main()
{
string str;
while(1)
{
cin >> str;
if(str=="end") break;
cout << str.size;
}
return 0;
}
これエラーが出るんですがstrの要素数を出力する場合どう書けばいいんですか?
VC++2008です。
0692デフォルトの名無しさん
2012/06/14(木) 23:46:53.91http://ideone.com/YBuvr
0693デフォルトの名無しさん
2012/06/15(金) 06:19:36.46個人負債の増加速度は経済協力開発機構(OECD)加盟国で3位と平均を大きく上回った。
大韓商工会議所が14日に発表した「個人負債現況と政策課題」報告書によると、
2010年の韓国のGDPに対する個人負債の比率は81%でOECD平均の73%より高かった。
これは財政危機を陥っているスペインの85%に迫る水準だ。ギリシャの61%より20ポイント高い数値だ。
個人負債増加幅も急速に拡大していうる。2006年以後鈍化した個人負債増加率は2010年に前年比2.4ポイント上昇の9.8%を記録した。
【今日の感想】この記事を読んで・・・
面白い (40件)
悲しい (2件)
すっきり (1件)
腹立つ (0件)
役に立つ (6件)
http://japanese.joins.com/article/707/153707.html?servcode=300§code=300
0694デフォルトの名無しさん
2012/06/15(金) 07:00:42.74役に立つ
0695デフォルトの名無しさん
2012/06/15(金) 19:56:02.03【今日の感想】この記事を読んで・・・
面白い (349件)
悲しい (19件)
すっきり (44件)
腹立つ (4件)
役に立つ (36件)..
0696デフォルトの名無しさん
2012/06/16(土) 06:09:17.53マニフェストをなにも守れない民主党の嫌がらせにも
耐え忍ぶ民族
0697デフォルトの名無しさん
2012/06/17(日) 06:24:34.95public:
tree* right;
template <tree* tree::*right>
void func1(tree* t) {
tree *p = t->*right;
}
};
こんなクラスを作ってコンパイルすると以下のようなエラーになります。
test.cpp: In member function ‘void tree::func1(tree*)’:
test.cpp:7: error: ‘((tree*)this)->tree::right’ cannot be used as a member pointer, since it is of type‘tree*’
func1をfriend関数にするとコンパイルが通るのですが、メンバー関数にすると通りません。
どこがまちがってるでしょうか?
0698デフォルトの名無しさん
2012/06/17(日) 11:01:04.580699デフォルトの名無しさん
2012/06/17(日) 19:06:53.96テンプレート引数を変更したらコンパイル通りました。
ありがとうございました。
0700デフォルトの名無しさん
2012/06/19(火) 05:42:11.940701デフォルトの名無しさん
2012/06/19(火) 05:46:13.06規定クラス名::func()
で呼べるよ
0702デフォルトの名無しさん
2012/06/19(火) 06:38:25.59ないのでは。C++では派生クラスのコンストラクタから基底クラスのコンストラクタへの綱渡りは基本できなかったと思う。
0705デフォルトの名無しさん
2012/06/19(火) 10:49:09.38あ、もともとメンバ名の衝突がある時点でだめか。
0706デフォルトの名無しさん
2012/06/19(火) 13:35:14.840707デフォルトの名無しさん
2012/06/19(火) 14:37:25.620708デフォルトの名無しさん
2012/06/19(火) 15:35:42.570709デフォルトの名無しさん
2012/06/19(火) 16:27:25.98どうしますか?
0710デフォルトの名無しさん
2012/06/19(火) 16:35:01.470711デフォルトの名無しさん
2012/06/19(火) 17:32:54.820712デフォルトの名無しさん
2012/06/19(火) 17:35:05.280713デフォルトの名無しさん
2012/06/19(火) 17:38:03.730714デフォルトの名無しさん
2012/06/19(火) 17:39:34.300715デフォルトの名無しさん
2012/06/19(火) 17:41:38.830716デフォルトの名無しさん
2012/06/19(火) 17:42:50.230717デフォルトの名無しさん
2012/06/19(火) 17:52:09.79親父の豚汁店を継ぐことを固く決意した主人公。
奇跡とも言われた味を守り抜くことはできるのか。
0718デフォルトの名無しさん
2012/06/19(火) 17:54:05.22どうする豚汁!?
0719デフォルトの名無しさん
2012/06/19(火) 19:04:58.99ほじくりかえして申し訳ないんだけど、callocってなんかまずいの?
別に問題ないでしょう。わざわざ0クリアをした領域の上に、なにか別の内容をあらためて代入する、という無駄な動きにめをつぶるのであれば。
0721デフォルトの名無しさん
2012/06/19(火) 19:12:58.27その特定の状況のみを考えて>>490を書いたってことね。どもです。
0722デフォルトの名無しさん
2012/06/20(水) 00:05:49.51{
};
class Suba : public Base
{
};
class Subb : public Base
{
};
Suba g_scene
このあとg_sceneの型をSubbに変更するといったことはできるのでしょうか?
できるなら書き方の例もお願いします
0723デフォルトの名無しさん
2012/06/20(水) 00:25:14.27Subb b = (*reinterpret_cast<Subb*>(reinterpret_cast<void*>(&g_scene)));
ただこんなことするプログラマーとはあまり関わり合いたくないレベル
0724デフォルトの名無しさん
2012/06/20(水) 00:29:02.270725デフォルトの名無しさん
2012/06/20(水) 00:32:04.21普段もこれからもこんなの書かねぇんだから
そもそもLPVOIDは特殊だがポインタのキャストなんだからreinterpret_castでも問題ないんじゃねぇの?
0726デフォルトの名無しさん
2012/06/20(水) 01:04:27.180727デフォルトの名無しさん
2012/06/20(水) 01:18:06.440728デフォルトの名無しさん
2012/06/20(水) 01:54:06.080729デフォルトの名無しさん
2012/06/20(水) 03:30:37.91Cキャスト使っている奴ばっかだわw
0730デフォルトの名無しさん
2012/06/20(水) 04:20:06.180731デフォルトの名無しさん
2012/06/20(水) 06:31:49.680732デフォルトの名無しさん
2012/06/20(水) 06:33:40.41>Suba g_scene;
こう書かずに
Base *scene;
こう宣言すれば?Baseが必要なメンバーを網羅した抽象化クラスなら問題ない。
Base *scene;
Suba a;
Subb b;
scene = &a;
scene = &b;
基本的にはこんな感じで差し替えてやればいい。もし、Suba、Subb固有の操作が
したいなら、そこだけsceneを使わずaとbを直接参照して操作する。
間違ってもダウンキャストしちゃだめよ。
0733デフォルトの名無しさん
2012/06/20(水) 09:23:49.61std::vector<ABC*> xyz;
void erase(void)
{
while(xyz.empty()){
delete *(xyz.begin());
xyz.erase(xyz.begin());
}
}
vectorの要素を解放するコードは、これ以上短くなりますか?
または、もっと簡潔に記述出来ますでしょうか?
0734デフォルトの名無しさん
2012/06/20(水) 09:25:47.55> while(xyz.empty()){
じゃなく、
> while(!xyz.empty()){
でした、済みません。
0735デフォルトの名無しさん
2012/06/20(水) 09:46:26.78xyz.clear();
0736デフォルトの名無しさん
2012/06/20(水) 10:35:51.680737デフォルトの名無しさん
2012/06/20(水) 10:47:50.02ありがとうございます、勉強になりました。
>>736
じゃないのです。
0738デフォルトの名無しさん
2012/06/20(水) 12:22:00.380739デフォルトの名無しさん
2012/06/20(水) 12:28:09.530740デフォルトの名無しさん
2012/06/20(水) 12:42:32.690741デフォルトの名無しさん
2012/06/20(水) 13:55:11.46だとしたら>733はC++05(だっけ?)の範囲では妥当解?
0742デフォルトの名無しさん
2012/06/20(水) 14:42:02.22後でclearのほうが効率が良いと思う一応
0743デフォルトの名無しさん
2012/06/20(水) 14:43:53.32先頭から一つずつeraseとか無いわ
普通にforでdeleteしてclearか、せめて最後の要素からでないと
0744デフォルトの名無しさん
2012/06/20(水) 14:45:00.270745デフォルトの名無しさん
2012/06/20(水) 16:08:17.04無条件にdelete出来るポインタをvectorに格納する意味が判らん
0746デフォルトの名無しさん
2012/06/20(水) 16:30:53.64backとpop_backでもっと短く,速くなる
http://ideone.com/zQdD0
4.1秒
while(!xyz.empty()){
delete *xyz.begin();
xyz.erase(xyz.begin());
}
http://ideone.com/R92Ik
0.02秒
while(!xyz.empty()){
delete xyz.back();
xyz.pop_back();
}
0747デフォルトの名無しさん
2012/06/20(水) 17:22:39.84わからないならクチを挟むな
0748741(≠733)
2012/06/20(水) 17:28:45.94なるほどね。勉強になったよ。THX!
0749デフォルトの名無しさん
2012/06/20(水) 17:46:17.97もしデストラクタでの処分方法を考えていたのなら、eraseなりclearなりは要らないと思う
0750デフォルトの名無しさん
2012/06/20(水) 18:00:47.010751デフォルトの名無しさん
2012/06/20(水) 18:01:48.710752デフォルトの名無しさん
2012/06/20(水) 19:22:51.40とした場合サブサブクラスやサブクラスやクラスの引数なしのコンストラクタって全部動きますか?
0753デフォルトの名無しさん
2012/06/20(水) 19:26:11.480754デフォルトの名無しさん
2012/06/20(水) 19:27:30.65ありがあとう
0755デフォルトの名無しさん
2012/06/20(水) 19:32:31.05コンストラクタですっとばしは考えらん
0756デフォルトの名無しさん
2012/06/20(水) 19:36:30.290757デフォルトの名無しさん
2012/06/20(水) 20:18:42.52基底クラスのメソッドとサブクラスのメソッドのどちらが呼び出されますか?
サブクラスのメソッドが呼び出されるとした場合、
サブクラスのフィールドを仮想関数で弄ることはできますか?
アップキャストして基底クラスの状態でまとめたもの(配列)を、
ループで一気に仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたいです。
0758デフォルトの名無しさん
2012/06/20(水) 20:25:00.650759デフォルトの名無しさん
2012/06/20(水) 20:29:36.120760デフォルトの名無しさん
2012/06/20(水) 20:32:12.85すいません、解説サイトがよくわからなくて・・
>>759
つまり・・・!?
0761デフォルトの名無しさん
2012/06/20(水) 20:35:33.10ttp://www5c.biglobe.ne.jp/~ecb/cpp/06_07.html
これ見ればどっちが呼ばれるかわかるだろ
0762デフォルトの名無しさん
2012/06/20(水) 20:49:52.24> 仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたい
それこそが多態性
0763デフォルトの名無しさん
2012/06/20(水) 20:53:24.55メッセージ機能ないんだから関数で通せよ
0764デフォルトの名無しさん
2012/06/20(水) 20:54:44.78メンバ関数だろ
0765デフォルトの名無しさん
2012/06/20(水) 20:54:53.86おお、サブクラスのメソッドが呼ばれるってことですね
ありがとうございます!
0766デフォルトの名無しさん
2012/06/20(水) 20:58:44.34すいません
0767デフォルトの名無しさん
2012/06/20(水) 21:06:54.730768デフォルトの名無しさん
2012/06/20(水) 21:07:38.920769デフォルトの名無しさん
2012/06/20(水) 21:13:40.50特に強くを意味する言葉。
日本ではメッゾフォルテなどが有名。
0770デフォルトの名無しさん
2012/06/20(水) 21:14:52.080771デフォルトの名無しさん
2012/06/20(水) 21:15:22.000772デフォルトの名無しさん
2012/06/20(水) 21:16:08.100773デフォルトの名無しさん
2012/06/20(水) 21:17:18.740774デフォルトの名無しさん
2012/06/20(水) 21:19:17.740775デフォルトの名無しさん
2012/06/20(水) 21:19:56.51正しくはMezod
0776デフォルトの名無しさん
2012/06/20(水) 21:21:09.470777デフォルトの名無しさん
2012/06/20(水) 21:39:45.200778デフォルトの名無しさん
2012/06/20(水) 21:44:41.050779デフォルトの名無しさん
2012/06/20(水) 21:47:07.130780デフォルトの名無しさん
2012/06/20(水) 21:51:50.840781デフォルトの名無しさん
2012/06/20(水) 22:01:20.13多分C#辺りから渡ってきた人。
0782デフォルトの名無しさん
2012/06/20(水) 22:06:59.270783デフォルトの名無しさん
2012/06/20(水) 22:32:59.33Methodは、SimulaのMember Procedureに対し、MessageとMethodが分離されていて
別物であることを強調したSmalltalkとObjective-Cの用語。
近頃の言語は、そういう背景を踏まえずにMember Procedureと変わらんものを
Method, Methodと連呼する。ちゃんとMessageを実装している言語に失礼だよね。
0784デフォルトの名無しさん
2012/06/20(水) 22:53:38.100785デフォルトの名無しさん
2012/06/20(水) 22:58:42.380786デフォルトの名無しさん
2012/06/21(木) 00:25:00.590787デフォルトの名無しさん
2012/06/21(木) 05:51:46.070788デフォルトの名無しさん
2012/06/21(木) 08:19:27.01データが500万件を越えたあたりでAVLの方が速く終わるようになりました。
insertくらいは普通の木が常に速いと思ったのに。これって正しいですか?
0789デフォルトの名無しさん
2012/06/21(木) 08:36:09.84プログラムをプラム、プロシージャをプロセ、アセンブラをアセムって呼ぶ
ICEベンダーの技術者よりはましだと思う。
0790デフォルトの名無しさん
2012/06/21(木) 10:01:50.95こりゃアフィにも広まるし
完全に日テレはネットに嫌われるね
■モ娘(狼)
日テレ韓国マンセーで遂にGP帯オール一桁wwwwwwwwww
http://hayabusa3.2ch.net/test/read.cgi/morningcoffee/1335226115/
■ニュー速(嫌儲)
最近フジより韓流ゴリ押しの酷い日テレ GP帯(19〜23時)視聴率オール一桁達成
http://engawa.2ch.net/test/read.cgi/poverty/1335228771/
【フジ・日テレ死亡】テレビ朝日視聴率3冠おめでとうございます
http://engawa.2ch.net/test/read.cgi/poverty/1340233396/
■ニュース速報
【第二のフジテレビ】日テレ、韓流ゴリ押しで大爆死
http://engawa.2ch.net/test/read.cgi/news/1335230981/
■なんでも実況J
【朗報】韓流ゴリ押しの日テレが低視聴率
http://hayabusa.2ch.net/test/read.cgi/livejupiter/1335229538/
0791デフォルトの名無しさん
2012/06/22(金) 00:36:20.43どうしてもその呼び出し先ごとに異なる変数を与えたい場合、
適当な変数を用意して代入し、呼び出し先で解釈してもらうという手法はアリ?
例えば変数hogeを用意しておいて、Foo(int hoge) と Bar(int hoge) とでは、hogeの意味(使用目的)が異なるとか。
関数ポインタテーブルでごにょごにょ、ならばやったことありますが、十分にありだと思います。
テーブルに載せてる関数のなかで一番たくさん引数をもつものにプロトタイプをあわせていました、泥臭いけど。
宿題スレでやってcodepad にもあげたけれどもみつけられかったごめんなさい。
0793デフォルトの名無しさん
2012/06/22(金) 02:00:40.61ナシ
呼び出し先によって意味が変わるんじゃ呼び出し側で意味を持たせた引数を指定できない
int f1(int i, int j)
{
static int v[5] = { 1, 2, 4, 8, 16 };
return v[i] + v[j];
}
int f2(int i, int j)
{
return i / j;
}
int main()
{
int (*pf)(int, int) = 0;
// pf(1, 0); // f2が呼ばれるならアウト
// pf(9, 3); // f1が呼ばれるならアウト
}
0794デフォルトの名無しさん
2012/06/22(金) 02:04:08.510795791
2012/06/22(金) 02:58:37.43ありがとう。意見は割れるかあ。
便利だけど、危険性が伴うからホントどうしようかなと悩んでた。
そりゃ0除算や配列の外側へのアクセスなんかは、数値の範囲チェックをすれば良いだろうけど、
それでも心理的要因などが原因ではまる可能性はあるからなあ。
ぶっちゃけ使ってて気持ち悪いというのが大きいがw
関数ポインタじゃなくてクラスを利用しているなら、キャストを使うことも出来るだろうけど、
それをテーブル等に収めようとすると結局同じ問題が発生するんだよね。
うーん、mapで持たせたほうがスマートかなあ?
0796デフォルトの名無しさん
2012/06/22(金) 03:21:50.32わかってるなら、矛盾した箇所とか出てくるだろうから、そこをどうするかでしょ
0797デフォルトの名無しさん
2012/06/22(金) 06:55:44.09オブジェクトで実装するのであれば無し。
そもそも、ステートオブジェクトに外から関数の引数で値を渡すんじゃなく、
関数が呼ばれたタイミングでステートオブジェクトに情報を取得させればいい。
情報の取得元は、ステート開始以前にコンストラクターとかであらかじめ指定してやる。
StateA state1( &source1 );
StateB state2( &source1 );
StateC state3( &source2 );
state1.ChangeNextState( &state2 );
state2.ChangeNextState( &state3 );
state3.ChangeNextState( &state1 );
next_state = &state1;
while( next_state ) next_state = next_state->Execute();
0798デフォルトの名無しさん
2012/06/23(土) 04:22:44.42お前本気かよ。ぜんぜんちがうだろうがw
0799デフォルトの名無しさん
2012/06/23(土) 11:39:45.440800デフォルトの名無しさん
2012/06/23(土) 17:42:48.24+=や[]のような演算子は使えるのに代入演算子は使えないのは何故なんでしょうか?
ご存知の人、なにとぞアドバイスください
class A{
public:
int x;
A(void){
this->x = 0;
}
A& operator=(int x){
this->x = x;
return *this;
}
A& operator+=(int x){
this->x += x;
return *this;
}
};
class B : public A{
};
int main(){
B b;
b += 5; //成功
b = 6; //コンパイルエラー
return 0;
}
0801デフォルトの名無しさん
2012/06/23(土) 18:08:01.38An assignment operator shall be implemented by a non-static member function with exactly one parameter.
Because a copy assignment operator operator= is implicitly declared for a class if not declared by the
user (12.8), a base class assignment operator is always hidden by the copy assignment operator of the
derived class.
0802デフォルトの名無しさん
2012/06/23(土) 18:17:46.31class B : public A {
public:
using A::operator=;
};
0803デフォルトの名無しさん
2012/06/23(土) 18:21:41.900804800
2012/06/23(土) 18:28:08.18子クラスのポインタを親クラスのポインタにキャストしてから使うか(ポインタじゃないとうまくいかなかった)、
子クラスでも演算子オーバーロードするしかないかなと思ったんですが(親クラスが自作クラスじゃないと挙動を再現するのは難しい)
>>802の方法でスマートに動いたんでこうしてみます
感謝します
0805デフォルトの名無しさん
2012/06/23(土) 18:43:30.06どこの引用ですか?
ソースを教えてください。
0806デフォルトの名無しさん
2012/06/23(土) 18:51:12.290807デフォルトの名無しさん
2012/06/23(土) 18:53:31.21もってねーからきいてんじゃん
ばかかおめー
0808デフォルトの名無しさん
2012/06/23(土) 18:58:09.15規格票持ってないって?馬鹿かおめー
0809デフォルトの名無しさん
2012/06/23(土) 19:08:31.920810デフォルトの名無しさん
2012/06/23(土) 19:10:43.160811デフォルトの名無しさん
2012/06/23(土) 19:18:34.460812デフォルトの名無しさん
2012/06/24(日) 10:06:24.61http://engawa.2ch.net/test/read.cgi/poverty/1340431520/
K-POP終了 「チケット12000枚完売」 → 実は450枚だった
http://engawa.2ch.net/test/read.cgi/poverty/1340496276/
↓チケット購入者の様子
http://long.2chan.tv/jlab-long/10/s/long289597.jpg
K-POPブームついに終焉? チケット売れずイベント中止、返金もできず
兵庫県内で開催予定だったK-POPイベントが、チケット売れ行きが低調で直前になって中止になった。
イベントを主催した会社は事実上倒産し、チケットの払い戻しも出来ないという有様で、
チケット購入者からは怒りの声が出ている。
同社担当弁護士によると、当初1万2000枚ほどの販売を見込んでいた代理店との契約がなくなってしまい、
他でまかなおうとしていたが、それも間に合わず中止になった。
いろいろ事情はあるにせよ、「飛ぶようには売れなかった」ということは確かなようだ。
帝国データバンクによると、同社が直接販売したチケットは450枚。
「『あのKARA』や『あの超新星』が来るのに何で販売低調なんだ」
ネットでは、チケット購入者からは「許せない。責任もって返金してもらわないと」と怒りの声が出ている。
疑問なのが、K-POPがブームの中、KARAや超新星といった大人気グループを呼んでも
なぜチケットを捌けなかったのか、という点だ。
2012/6/22 19:01
http://www.j-cast.com/2012/06/22136771.html?p=2
0813uy
2012/06/24(日) 12:26:55.44俺は韓国が三度の飯より好きだ
ブームは本物だと確信してる
0814デフォルトの名無しさん
2012/06/24(日) 13:09:20.89つまり韓国の文化も日本製ってことか?
0815デフォルトの名無しさん
2012/06/24(日) 16:44:15.570816デフォルトの名無しさん
2012/06/24(日) 17:01:55.560817デフォルトの名無しさん
2012/06/24(日) 17:08:50.810818デフォルトの名無しさん
2012/06/24(日) 20:24:21.380819デフォルトの名無しさん
2012/06/24(日) 21:35:30.69スーパークラス型の配列に
サブクラスAやサブクラスBを代入したいのですが
サブクラスのメンバ変数もコピーされるのでしょうか?
仮想関数でサブクラスのメンバ変数の値を操作したいです。
0820デフォルトの名無しさん
2012/06/24(日) 21:38:55.270821デフォルトの名無しさん
2012/06/24(日) 23:30:01.77>>802で解決したんじゃないんかい
0822デフォルトの名無しさん
2012/06/25(月) 13:35:21.61固有の引数を渡したいのですが
グローバル変数を介すしかないのでしょうか?
0823デフォルトの名無しさん
2012/06/25(月) 13:36:04.280824デフォルトの名無しさん
2012/06/25(月) 16:22:19.04・WNDCLASSEX.cbWndExtra = sizeof(void*)、RegisterClassEx
・非表示のウィンドウ作成
・SetWindowLongPtr(hWnd, 0, 固有のデータのポインタ)
・SetTimer(hWnd, 0, n, TimerProc)
・TimerProc内でGetWindowLongPtr
ってした方が良いと思う
0825デフォルトの名無しさん
2012/06/25(月) 16:41:39.930826デフォルトの名無しさん
2012/06/25(月) 16:45:10.00とりあえず、文法的なことはある程度は覚えましたが、Windowsアプリを作成しようとすると
手も足も出ません。
0827800
2012/06/25(月) 16:47:29.290828デフォルトの名無しさん
2012/06/25(月) 16:50:18.320829826
2012/06/25(月) 16:59:23.84例えば、
VSのエディタみたいに、テキスト編集Viewで +- で畳んだりとか
キーワードで色を変えるとか
listコントロールとtreeコントロールが合体したようなコントロールの作成とか
listコントロールにプログレスバーを表示して、各行に割り付けられたThreadの進行を表示するとか
0831デフォルトの名無しさん
2012/06/25(月) 17:22:19.670832800
2012/06/25(月) 18:19:40.34今はやり方知らないってだけで、それらも全部Webで探せば出てくる
ただ、Win32APIの機能というか仕様みたいなのを知った上でないと検索しづらいのも確か
APIの仕組み知らずにいきなり「ウィンドウ作ったあとはメッセージループを実装しよう」なんて普通思いつかないでしょ
書籍ならAdvanced Windowsとか、Webなら猫プロとかもう少し読んでみるといい
>>829でできないこととして挙げてることは、UIに関係するものはオーナードローとかサブクラスとかその辺でほとんど片付く
マルチスレッドのWin32環境固有以外の基本的な扱いかたとか、
「畳む・戻す」を実装するためのアルゴリズムなんかはWin32環境とは関係ない
0833826
2012/06/25(月) 18:39:50.19Webはどこもかしこも、同じことばっかじゃないですか?
自分が分かる範囲でしか書いてないし。
ちょっと凝ったコントロールを作成しているのはほぼ間違いなく海外のエンジニアだし。
日本は精精、コントロールの基本的な使い方程度
0834デフォルトの名無しさん
2012/06/25(月) 18:42:00.75あと英語も進んで読みなさい
0835デフォルトの名無しさん
2012/06/25(月) 18:44:36.200836デフォルトの名無しさん
2012/06/25(月) 18:49:19.13ろくにアプリも作れないのにコントロール コントロール言ってるのは
0837デフォルトの名無しさん
2012/06/25(月) 18:50:38.03ちょっと凝ったコントロールを作れないというあなたを理解できない
それともいかしたカスタムコントロール自作すんのめんどいからコードをサクッとコピーしたいってこと?
無駄なUIかますのは商用ソフトだから無理だと思われ
0838デフォルトの名無しさん
2012/06/25(月) 18:54:29.92質問者にはなさそう
0839デフォルトの名無しさん
2012/06/25(月) 18:56:08.720840デフォルトの名無しさん
2012/06/25(月) 18:56:42.63基本コントロールは凝ったことせず手早く作るためのものだし
0841デフォルトの名無しさん
2012/06/25(月) 19:05:30.290842デフォルトの名無しさん
2012/06/25(月) 19:11:35.350843デフォルトの名無しさん
2012/06/25(月) 20:28:43.760844デフォルトの名無しさん
2012/06/25(月) 20:35:20.86int val;
public:
A(int v):val(v) {}
bool operator<(A &r) {return this->val < r.val};
};
というクラスがあって、
A *a1 = new A(1); A *a2 = new A(2);
というインスタンスを作ったときに、
if (a1 < a2) と比較すると、ポインタ値の大小の比較になっちゃうんですか?
もし定義した演算子を使おうとすると
if (*a1 < *a2) とか書かないと駄目なんでしょうか?
よろしくお願いします。
0845デフォルトの名無しさん
2012/06/25(月) 20:41:31.100846デフォルトの名無しさん
2012/06/25(月) 21:14:09.980847デフォルトの名無しさん
2012/06/25(月) 21:19:39.440848デフォルトの名無しさん
2012/06/25(月) 22:37:27.070849デフォルトの名無しさん
2012/06/25(月) 22:50:47.370850デフォルトの名無しさん
2012/06/25(月) 22:55:46.911秒間何もできなくなってしまいます
Sleepしても他の処理ができるようにするにはどうしたらいいですか
0851デフォルトの名無しさん
2012/06/25(月) 22:57:50.950852デフォルトの名無しさん
2012/06/25(月) 22:58:49.18何がしたいの
止めてる間に他の仕事させるならマルチスレッド
0853デフォルトの名無しさん
2012/06/25(月) 23:00:28.03Sleep(1000);
SetDlgItemText(hwndDlg,text,ireruyatu2);
Sleep(1000);
...
ってやると
ダイアログがフリーズして何もできなくなってしまうんです...
マルチスレッドですね・・・ぐぐってみます
0854デフォルトの名無しさん
2012/06/25(月) 23:04:34.160855デフォルトの名無しさん
2012/06/25(月) 23:16:26.260856デフォルトの名無しさん
2012/06/25(月) 23:18:27.07ただ最後に描画するのは
メッセージループもってるスレッドだったはずだが
0857デフォルトの名無しさん
2012/06/25(月) 23:25:00.570858デフォルトの名無しさん
2012/06/25(月) 23:26:37.520859デフォルトの名無しさん
2012/06/25(月) 23:33:07.810860デフォルトの名無しさん
2012/06/26(火) 00:46:14.15エバンゲリオン劇場版(昔ね)を見に行ったついでに買ったまま、その部分は今の今まで積読状態なんですが、もしかしてもしかするとお求めのものかもしれません。
http://www.amazon.co.jp/dp/4774100544/
これは16ビットの本だけれども、32ビット版クラスライブラリも、みかけた、ような、きが、す、る。
工藤さん、最近はかいてくださらないんですね、楽しみにしているんですけど。
0862デフォルトの名無しさん
2012/06/26(火) 07:16:15.67綾波レイってウンコするの?
当時はレイよりも原田夕子ちゃんにべたぼれでした。
0864uy
2012/06/26(火) 08:13:30.69ウンコ野郎だからな
0866デフォルトの名無しさん
2012/06/26(火) 10:22:00.67別スレッドから直接API呼ばなくても
必要な処理が終わったらメッセージ飛ばして
メッセージループしてるスレッドにデータを渡す
0867デフォルトの名無しさん
2012/06/26(火) 10:29:08.26動的に増やせなくていいならグローバル変数
そうでないならウィンドウを使うしかない
あとSetTimer使っててウィンドウはコストが大きいとか意味不明
コスト気にするほど大量にあるなら普通に自分でスケジューラスレッドを用意すべき
0868デフォルトの名無しさん
2012/06/26(火) 11:22:25.160870デフォルトの名無しさん
2012/06/26(火) 12:05:05.640871uy
2012/06/26(火) 12:24:13.180872デフォルトの名無しさん
2012/06/26(火) 12:38:28.170873855
2012/06/26(火) 12:47:14.760874デフォルトの名無しさん
2012/06/26(火) 12:50:45.230875uy
2012/06/26(火) 12:52:48.84指図は受けない
0876vw
2012/06/26(火) 14:24:17.290877デフォルトの名無しさん
2012/06/26(火) 16:06:33.74Cの最大の難所らしいんですが・・・
void ** const (**(**entryMap[ENTRIES])(void**))(void ** const (**)());
ってなんですか?
0878デフォルトの名無しさん
2012/06/26(火) 16:10:52.21ttp://www.tcp-ip.or.jp/~3arrows/
ここに書いてるよ
0879デフォルトの名無しさん
2012/06/26(火) 16:18:17.43変数宣言です
0880デフォルトの名無しさん
2012/06/26(火) 23:45:42.62マジレスしとくと、関数(返却値:関数ポインタのポインタ、引数:voidのポインタのポインタ)のポインタのポインタの配列
ttp://codepad.org/1ZUnvLyo
0881デフォルトの名無しさん
2012/06/26(火) 23:48:11.780882デフォルトの名無しさん
2012/06/27(水) 00:40:52.62すごい
っていうか、このレベルがポインタを理解しているというレベルなのか?
0883デフォルトの名無しさん
2012/06/27(水) 01:05:00.740885デフォルトの名無しさん
2012/06/27(水) 04:03:39.26出てきそうなコードだった
0886デフォルトの名無しさん
2012/06/27(水) 09:07:34.67こんなソースみたら書いた人を呪う
0887デフォルトの名無しさん
2012/06/27(水) 11:31:47.030888デフォルトの名無しさん
2012/06/27(水) 11:33:37.290889デフォルトの名無しさん
2012/06/27(水) 11:47:16.940890デフォルトの名無しさん
2012/06/27(水) 11:54:09.70示せないならゴミカス
0891デフォルトの名無しさん
2012/06/27(水) 12:30:22.93>void ** const (**(**entryMap[ENTRIES])(void**))(void ** const (**)())
void
2.ポインタ→関数→配列の順に結合度の低いものからはずしていく
>** const (**(**entryMap[ENTRIES])(void**))(void ** const (**)())
voidへのポインタのコンストポインタ
3.D(パラメータリスト)の形の時は関数
>(**(**entryMap[ENTRIES])(void**)) (void ** const (**)())
「voidへのポインタのコンストポインタ」を戻り値とし「void ** const (**)()」を引数とする関数
4.(D)の場合、単純に()を外す
>** (**entryMap[ENTRIES])(void**)
「voidへのポインタのコンストポインタ」を戻り値とし「void ** const (**)()」を引数とする関数へのポインタのポインタ
5.D(パラメータリスト)の形の時は関数
>(**entryMap[ENTRIES]) (void**)
「「voidへのポインタのコンストポインタ」を戻り値とし「void ** const (**)()」を引数とする関数へのポインタのポインタ」を戻り値とし「void**」を引数とする関数
6.(D)の場合、単純に()を外す
>** entryMap[ENTRIES]
「「voidへのポインタのコンストポインタ」を戻り値とし「void ** const (**)()」を引数とする関数へのポインタのポインタ」を戻り値とし「void**」を引数とする関数へのポインタのポインタ
7.D[コンパイル時定数]の形の時は配列
>entryMap [ENTRIES]
「「voidへのポインタのコンストポインタ」を戻り値とし「void ** const (**)()」を引数とする関数へのポインタのポインタ」を戻り値とし「void**」を引数とする関数へのポインタのポインタの配列(要素数ENTRIES)
8.最後に残ったものがID。
変数名entryMap
9.関数内のパラメータリストについても同様に構文解析
んー。あってる気がしない。
0892デフォルトの名無しさん
2012/06/27(水) 20:01:45.70ロードする方法って無いですかね・・・
DEPに逆らうことなく動的にアドレスの異なる関数ポインタを増やしたい
0893デフォルトの名無しさん
2012/06/27(水) 20:05:02.770894デフォルトの名無しさん
2012/06/27(水) 20:25:59.12いや、ぐぐってはいるんですが中々・・・
0895デフォルトの名無しさん
2012/06/27(水) 20:42:11.030896デフォルトの名無しさん
2012/06/27(水) 20:49:32.83winはVirtualAllocにPAGE_EXECUTE、linuxはmemalign->mprotectにPROT_EXECで出来そうです
JITコンパイラがDEP無効にせずに動いてるんだからそりゃ方法はありますよね
DLL複製とか変なことせず最初からこっちを調べるべきでした
0897デフォルトの名無しさん
2012/06/28(木) 20:38:03.80さすがにこんなのでねぇよ
0898デフォルトの名無しさん
2012/06/28(木) 23:01:13.700899デフォルトの名無しさん
2012/06/28(木) 23:14:57.30加えてtypedefで分割統治しないのは愚策
分かるに越したことは無いが
0900デフォルトの名無しさん
2012/06/28(木) 23:32:32.19int Function( void (* callback )( void * ) );
int ( *Function() )( const char[] );
これぐらいだったら直書きの方がいい。
0901デフォルトの名無しさん
2012/06/28(木) 23:34:57.87なにを上から目線でいってるの
0902デフォルトの名無しさん
2012/06/28(木) 23:48:40.60void func(Super* super){Sub* sub = super;}
も
Sub* sub=dynamic_cast<Sub*>(super)
もダメでした。
0903デフォルトの名無しさん
2012/06/28(木) 23:49:02.91あなたがあまりにも低いところにいらっしゃるのでは?hw
0904デフォルトの名無しさん
2012/06/29(金) 00:01:35.53Sub* sub=static_cast<Sub*>(super);
0905デフォルトの名無しさん
2012/06/29(金) 00:03:57.91組み込みだから低レベルだぜ
0906デフォルトの名無しさん
2012/06/29(金) 00:19:53.18ありがとう
0907デフォルトの名無しさん
2012/06/29(金) 00:55:52.84名前空間を汚すから、変数の数は少ないに越したことはない。出来るだけ使いまわせ。
と言っているに等しい。
0908デフォルトの名無しさん
2012/06/29(金) 03:08:03.63�AClassA *hoge = new classA();
インスタンス生成で上の二つの使い方の違いがよくわかりません。
常に�@でもOKですか?
0909デフォルトの名無しさん
2012/06/29(金) 03:16:57.44int *i = new int();
この違いはわかってますか?
0910デフォルトの名無しさん
2012/06/29(金) 03:32:17.34前者が静的で後者が動的?
メモリへの配置され方が違うだけで使い方は一緒?
0911デフォルトの名無しさん
2012/06/29(金) 03:33:05.840913デフォルトの名無しさん
2012/06/29(金) 04:10:52.47スコープ超えたらなくなるからダメ
0914デフォルトの名無しさん
2012/06/29(金) 04:53:08.76馬鹿
0915デフォルトの名無しさん
2012/06/29(金) 06:52:37.281bit脳かよ。LONGLONGとか定義してるあほな環境はともかく、
UNIXやLinux系で構造体以外のtypedefが少ない理由を考えろよ。
あと、typedefをローカルスコープやファイルスコープで使いたいなら
好きなだけつかいやいい。
0916デフォルトの名無しさん
2012/06/29(金) 07:42:09.270917uy
2012/06/29(金) 07:48:03.510918デフォルトの名無しさん
2012/06/29(金) 08:05:12.61typedefの数にも気を使わないといけないのか
0919デフォルトの名無しさん
2012/06/29(金) 10:04:56.291の方じゃないと実現できないこと、2の方じゃないと実現できないことってのがある。
ぶっちゃけそれにブチ当たらない限り、最初は1だけでも良いと思う。
0920デフォルトの名無しさん
2012/06/29(金) 10:58:12.52自己紹介乙
0921デフォルトの名無しさん
2012/06/29(金) 11:45:14.19概ね、>919。
但し、(2)は破棄するタイミングに要注意。できる限りスマートポインタを使いましょう。
0922デフォルトの名無しさん
2012/06/29(金) 11:54:38.580923デフォルトの名無しさん
2012/06/29(金) 12:03:31.68スマポ使えばおk
0924デフォルトの名無しさん
2012/06/29(金) 15:53:55.56構造体以外のtypedefなんて
めちゃくちゃいっぱいあるよ
0925デフォルトの名無しさん
2012/06/29(金) 16:05:34.40ちょっと新しいことを覚えてアピールしようと思ったみたいだけど
あまりにもバカを晒しすぎ。
0926デフォルトの名無しさん
2012/06/29(金) 18:45:30.36{ x, y, z, ... } <=> x + y * n + z * n^2 + ...
って一意な整数と変換する処理を切り出そうとしてるんだけど
この操作って何か名前ついてる?
気の利いた名前が浮かばない
0927デフォルトの名無しさん
2012/06/29(金) 18:50:11.98名無しでもバレバレ
0928デフォルトの名無しさん
2012/06/29(金) 19:17:11.69リトルエンディアン基数変換・・・とか?
0929デフォルトの名無しさん
2012/06/29(金) 20:00:44.47あー,1バイトずつだとそんな感じだなあ
基数は7とか13でやることになるんだけど,とりあえず基数変換って方向使わせてもらおう
さんくす
0930デフォルトの名無しさん
2012/06/29(金) 20:05:00.910931デフォルトの名無しさん
2012/06/29(金) 20:17:33.88ところでPythonのreduceみたいな関数は標準にあるかな
numericのaccumulateは見つけてて,
これの加算アルゴリズムを関数オブジェクトで渡せるようなのがあるとスッキリ書けるのだけど
0932デフォルトの名無しさん
2012/06/29(金) 20:29:43.45>>931後半は忘れて下さいな
0933デフォルトの名無しさん
2012/06/29(金) 20:45:26.71Posix系で移植目的以外でtypedefしてる型って例えばなんだよ。
0934デフォルトの名無しさん
2012/06/29(金) 20:50:28.270935デフォルトの名無しさん
2012/06/29(金) 21:06:09.00多少使ってはいるが、中心で開発してる人間は
移植目的以外なら基本的に避けろと言ってる。
http://www.realworldtech.com/forums/index.cfm?action=detail&id=110699&threadid=110549&roomid=2
http://www.linuxjournal.com/article/5780
0936デフォルトの名無しさん
2012/06/29(金) 21:15:59.52http://net.pku.edu.cn/~course/cs101/2008/resource/The_C_Programming_Language.pdf
0937デフォルトの名無しさん
2012/06/29(金) 22:13:17.54C++はtemplateとtypedefでおk
そんなとこだな
0938デフォルトの名無しさん
2012/06/29(金) 22:17:18.210939デフォルトの名無しさん
2012/06/29(金) 22:22:45.770940デフォルトの名無しさん
2012/06/29(金) 22:27:46.11単純ならベタで書けって話だろ
0941デフォルトの名無しさん
2012/06/29(金) 22:28:57.140942デフォルトの名無しさん
2012/06/29(金) 22:35:31.79・移植する気もないのにtypedef
アンチパターンの典型例だよな
cstrって名前でビット数変わるたびに
定義が変わったならまだ許せたが
0943デフォルトの名無しさん
2012/06/29(金) 22:35:46.37今は、どうなんかね
0944デフォルトの名無しさん
2012/06/29(金) 22:39:47.80とかやってたな
0945デフォルトの名無しさん
2012/06/29(金) 22:42:24.95>>877から読んでこいよ
0946デフォルトの名無しさん
2012/06/29(金) 22:43:05.63mmLength;
cmLength;
ptLength;
pxLength;
等々・・・
単位系は間違えると致命的なことになりかねんからな
0947uy
2012/06/29(金) 22:44:29.69専門用語使うなゴミカス
0948デフォルトの名無しさん
2012/06/29(金) 22:45:08.23おおざっぱ用途を指すようなハンガリアンは そこそこ使ってる (大きさを示す サイズを示す とか
0949デフォルトの名無しさん
2012/06/29(金) 22:46:39.62システムハンガリアンの考えと誤解されて違うものが広められたんだよな
0950デフォルトの名無しさん
2012/06/29(金) 22:46:56.26>>900あたりからそういう話になってんじゃん
0951デフォルトの名無しさん
2012/06/29(金) 22:47:56.32pを付けてポインタを明示して何が嬉しいのか謎
0952デフォルトの名無しさん
2012/06/29(金) 22:49:48.950953uy
2012/06/29(金) 22:49:51.650954デフォルトの名無しさん
2012/06/29(金) 22:49:51.54もはや習慣となっていて、自分でも理由がわからんw
やっぱりおもらしやら不正参照への不安からなのかねぇ
0955デフォルトの名無しさん
2012/06/29(金) 22:51:37.950956デフォルトの名無しさん
2012/06/29(金) 22:54:20.02後ろ2つ ポイント単位 画素(ピクセル)単位?
0957デフォルトの名無しさん
2012/06/29(金) 22:54:31.64ゴミカスゴミカスゴミカスの中二
0958デフォルトの名無しさん
2012/06/29(金) 22:56:01.88略称は解りづらいか。pointX,pixelXと書いたら、
これもこれで紛らわしいんだよね。
0959デフォルトの名無しさん
2012/06/29(金) 22:57:27.43変数が型に依存してるのは、OOの観点ではマズイ。
0960デフォルトの名無しさん
2012/06/29(金) 23:23:16.76本来のハンガリアン(=アプリケーションハンガリアン)
でもプリミティブのまま代入を禁止する、
強いtypedefがあれば変数名でなく型名でコンパイラチェック出来るんだよな。
D言語ではあったけど機能削除されたから、色々問題はあるようだけど
0961デフォルトの名無しさん
2012/06/30(土) 01:51:29.160962デフォルトの名無しさん
2012/06/30(土) 02:34:14.20pに意味があると思ってる場合には意味があるんだよ。
m_11234
m_pointX
m_pPixelSize
0963デフォルトの名無しさん
2012/06/30(土) 03:37:15.20どっち途気持ち悪いからどうでもいいけど。
0964デフォルトの名無しさん
2012/06/30(土) 05:05:58.410965デフォルトの名無しさん
2012/06/30(土) 07:06:47.45intはともかくdoubleとかが・・・
0966デフォルトの名無しさん
2012/06/30(土) 09:19:53.610967デフォルトの名無しさん
2012/06/30(土) 10:59:30.660968デフォルトの名無しさん
2012/06/30(土) 14:52:21.76今ではマイクロソフト自身が「あれはキモかった上に有害なんでやめるね;_;」って言い出す始末。
0969デフォルトの名無しさん
2012/06/30(土) 14:53:51.830970デフォルトの名無しさん
2012/06/30(土) 15:52:43.51メンバかどうかパッと見で分からないせいで
もの凄く解析に苦労したプログラムとかあるし
0971デフォルトの名無しさん
2012/06/30(土) 15:56:06.460972デフォルトの名無しさん
2012/06/30(土) 16:01:06.71書いた人はどれが何か分かるんだろうけど・・・
0973デフォルトの名無しさん
2012/06/30(土) 16:06:12.460974デフォルトの名無しさん
2012/06/30(土) 16:11:04.050975デフォルトの名無しさん
2012/06/30(土) 16:45:42.51そもそも、引数とローカル変数をすぐ確認できないような
長ったらしい関数書くなよ
0976デフォルトの名無しさん
2012/06/30(土) 17:19:49.840977デフォルトの名無しさん
2012/06/30(土) 17:41:53.57そもそも短かろうが一瞬で判別が付く方がメリットが大きい
バグを減らす為に副作用を常に意識してプログラムしてると
メンバかどうかというのは非常に重要な情報になる
m_ は無意味()とか誰かが言った事を鵜呑みにするのはよろしくない
>>973
m_ があると自然に別になるというメリットもあるね
まあ、同じになりそうなら引数の方をちょい変えればいいし
コンストラクタでは初期化子使える場合は関係ないけど
0978デフォルトの名無しさん
2012/06/30(土) 18:03:27.62見ることが目的であって、記述ミスが目的じゃないだろ
そもそも、thisなしで困るような関数書くな。
結局this忘れでも、メンバーにm_つけ忘れでも大差ねぇよ
0979デフォルトの名無しさん
2012/06/30(土) 18:04:57.120980デフォルトの名無しさん
2012/06/30(土) 18:06:48.560981デフォルトの名無しさん
2012/06/30(土) 18:13:00.95チーム開発では付けて欲しいと思ったことも。
0982uy
2012/06/30(土) 18:18:29.73故にマイクロソフトのプログラマの質は低い
マイクロソフトが言うことを鵜呑みにするなど愚の骨頂
0983デフォルトの名無しさん
2012/06/30(土) 18:21:12.840984デフォルトの名無しさん
2012/06/30(土) 18:25:43.88面倒だし。
0985デフォルトの名無しさん
2012/06/30(土) 18:30:20.210986デフォルトの名無しさん
2012/06/30(土) 18:32:07.900987デフォルトの名無しさん
2012/06/30(土) 18:33:07.920988デフォルトの名無しさん
2012/06/30(土) 18:34:11.31this->って書いたら次の一字で絞りこませろよ
0989デフォルトの名無しさん
2012/06/30(土) 18:35:44.350990デフォルトの名無しさん
2012/06/30(土) 18:36:30.630991デフォルトの名無しさん
2012/06/30(土) 18:38:44.700992デフォルトの名無しさん
2012/06/30(土) 18:43:58.85this->って書くより楽
0993デフォルトの名無しさん
2012/06/30(土) 18:46:18.200994デフォルトの名無しさん
2012/06/30(土) 18:55:02.420995デフォルトの名無しさん
2012/06/30(土) 18:55:24.060996デフォルトの名無しさん
2012/06/30(土) 18:56:04.700997デフォルトの名無しさん
2012/06/30(土) 19:16:57.88int localData_; のような感じ。
0999デフォルトの名無しさん
2012/06/30(土) 19:38:20.94見る事が目的なのに、それに信頼性が無かったら全く意味が無いだろ
>>988
this->とか6文字も打ってそんな事言うとか・・・
>>997
後ろに _ でも別に区別が付くという意味ではいいけど、
補完機能を使う時に引数 hoge とメンバ変数 hoge_ があった場合に
ミスって hoge を選択しそうで怖いと言う面もあるな
接尾辞よりは接頭辞の方が間違いを防ぐ意味でも良いと思う
1000デフォルトの名無しさん
2012/06/30(土) 19:40:33.29【初心者歓迎】C/C++室 Ver.79【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1341052801/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。