C++相談室 part82
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/06/02(水) 20:20:13ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part81
http://pc12.2ch.net/test/read.cgi/tech/1273407971/
0002デフォルトの名無しさん
2010/06/02(水) 20:22:03[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
http://www.cppreference.com/ (英語)
http://www.cppreference.com/wiki/jp/ (↑の日本語訳だけどまだ未完)
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ International Standard]
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38110
[JTC1/SC22/WG21 - C++]
http://www.open-std.org/jtc1/sc22/wg21/
ここから規格の最新(2003より新しい)ドラフトがダウンロードできる。
[JIS X3014]
http://www.jisc.go.jp/app/pager?id=15868
ISO規格の日本語訳。JIS X 3014:2003はISO/IEC 14882:2003 (E)に対応。
0003デフォルトの名無しさん
2010/06/02(水) 20:22:54[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
SGI-STL http://www.sgi.com/tech/stl/
STLport http://stlport.sourceforge.net/
GNU libstdc++ http://gcc.gnu.org/libstdc++/
Apache C++ Standard Library (STDCXX) http://stdcxx.apache.org/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://episteme.wankuma.com/stlprog/ (※1999年発行注意)
[Loki]
http://sourceforge.net/projects/loki-lib/
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
0004デフォルトの名無しさん
2010/06/02(水) 20:23:52amazon.com C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/
The C++ Programming Language
http://www.amazon.com/exec/obidos/ASIN/0201700735/
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
http://www.amazon.com/exec/obidos/ASIN/0201824701/
http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
http://www.amazon.com/exec/obidos/ASIN/0201379260/
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
http://www.amazon.com/exec/obidos/ASIN/0201924889/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
http://www.amazon.com/exec/obidos/ASIN/020163371X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/0201615622/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/020170434X/
Exceptional C++ Style
http://www.amazon.com/exec/obidos/ASIN/0201760428/
0005デフォルトの名無しさん
2010/06/02(水) 20:25:24Effective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
C++ Template Metaprogramming
http://www.amazon.com/exec/obidos/ASIN/0321227255/
■長いソースを貼るときはここへ。■
http://codepad.org/
0006デフォルトの名無しさん
2010/06/02(水) 21:17:030007デフォルトの名無しさん
2010/06/02(水) 21:34:290008デフォルトの名無しさん
2010/06/02(水) 22:36:520009デフォルトの名無しさん
2010/06/02(水) 23:09:030010デフォルトの名無しさん
2010/06/02(水) 23:34:36環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0011デフォルトの名無しさん
2010/06/03(木) 00:11:07地鎮祭乙
0012デフォルトの名無しさん
2010/06/03(木) 01:00:020013デフォルトの名無しさん
2010/06/03(木) 03:27:300014デフォルトの名無しさん
2010/06/03(木) 09:41:15Hoge & operator = (const Hoge & h) {
if(this == &h) return *this;
Hoge(h).swap(*this);
return *this;
}
↓
Hoge & operator = (const Hoge & h) { return this = &h ? *this : Hoge(h).swap(*this), *this; }
みたいな感じで行数減らせるようになって俺としては気持がいいんだけど…
あと意味的に連続してるような
a = aa;
b = bb;
c = cc;
みたいなばあいは
a = aa, b = bb, c = cc;
にした方が自然言語っぽくて見やすくない?
0015デフォルトの名無しさん
2010/06/03(木) 09:47:37これ , *this 要る?
this = &h ? *this : Hoge(h).swap(*this) だけで十分な気が。
> if(this == &h) return *this;
> this = &h ? *this : ...
条件が変わってる気が・・・。
0016デフォルトの名無しさん
2010/06/03(木) 09:56:28ブーリアンはやいよブーリアン。
0017デフォルトの名無しさん
2010/06/03(木) 12:21:480018デフォルトの名無しさん
2010/06/03(木) 12:23:39前スレから転載。
19 名前:デフォルトの名無しさん[sage] 投稿日:2010/05/09(日) 22:01:32
入門書だけでもこんだけあるんじゃん
ttp://www.amazon.co.jp/dp/4839926050/
ttp://www.amazon.co.jp/dp/4798108936/
ttp://www.amazon.co.jp/dp/4797354542/
ttp://www.amazon.co.jp/dp/4797343672/
ttp://www.amazon.co.jp/dp/4777512096/
ttp://www.amazon.co.jp/dp/477410843X/
ttp://www.amazon.co.jp/dp/4062573318/
ttp://www.amazon.co.jp/dp/4797316144/
ttp://www.amazon.co.jp/dp/4797353686/
あとはBoostの解説書とか
ttp://www.amazon.co.jp/dp/4798017043/
C++ テンプレートテクニックとか
ttp://www.amazon.co.jp/dp/4797354534/
20 名前:デフォルトの名無しさん[sage] 投稿日:2010/05/09(日) 22:18:05
>>19
へぇ。じゃぁあとは■Books(和書)■あたりでテンプレの形にまとめればよさそうだね。
あとはここらへんを■Books■の頭に追加だな。
http://www.amazon.co.jp/gp/bestsellers/books/754384/ref=pd_zg_hrsr_b_1_4_last
0019デフォルトの名無しさん
2010/06/03(木) 12:36:36参照にしとけばヌルチェックが省略できるかもね。
0020デフォルトの名無しさん
2010/06/03(木) 13:35:36zipの中のzipの中を探索するライブラリないですか?
解凍をせずに直にzipの中のzipを扱いたいのですが。
0021デフォルトの名無しさん
2010/06/03(木) 13:38:09ファイルの範囲を受け取るように拡張したらいいのですが。自前だと大変です。
0022デフォルトの名無しさん
2010/06/03(木) 14:21:23void f( int& i ) { printf( "%p\n", &i ); }
int *p = 0;
f( *p );
VC8, g++3.4.5 で普通に 0 と表示される。
規格ではどうか知らないけど。
0023デフォルトの名無しさん
2010/06/03(木) 14:23:450024デフォルトの名無しさん
2010/06/03(木) 14:35:13使ってるぜ
while ( c = fgetc(fp), c != EOF )
0025デフォルトの名無しさん
2010/06/03(木) 14:50:49template<typename T,typename SX=S0<T>>struct A;
template<typename T,typename SX>struct B{
template<typename Tany,typename SXany>B(A<Tany,SXany>const&a); // SX=S0<T>,SXany=S0<Tany> で S0を条件付けるにはどうすればいいんだろう?
};
B<int,S0<int>>::B(A<float,S0<float>>const&){} // ok
B<int,S0<int>>::B(A<float,S2<float>>const&){} // error
B<int,S0<int>>::B(A<int,S1<int>>const&){} // error
みたいな感じで
0026デフォルトの名無しさん
2010/06/03(木) 16:09:49取り敢えず 8.3.2 -4- 注記に、null参照は well-defined なプログラム中には
存在し得ないとある。
まぁ、機械語に直された後で実行時に存在しないようにするのは無理、
というか不合理だろうね
0027デフォルトの名無しさん
2010/06/03(木) 21:26:30同士アクセスが65-70くらいからバグるな。
それ以下だと正しいロックしているが。
これはwindowsのせいか?
0028デフォルトの名無しさん
2010/06/03(木) 21:29:37#include <tbb/concurrent_queue.h>
#pragma comment (lib, "tbb.lib")
#include <process.h>
#include <windows.h>
#include <iostream>
using namespace std;
using namespace tbb;
#define N 64
concurrent_queue<int> que;
int sum[N];
unsigned WINAPI fnc(void *n) {
int x, num=*(int*)n; delete n;
while(1) {
if( !que.try_pop(x) ) { Sleep(10); continue; }
if(x==-1) return 0;
sum[num]+=x; Sleep(rand()%5); }}
int main() {
HANDLE hd[N];
int n;
for(n=0; n<N; n++) sum[n]=0;
for(n=0; n<N; n++) { int *m=new int; *m=n; hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc, m, 0 ,NULL); }
for(n=0; n<=10000; n++) que.push(n);
for(n=0; n<N; n++) que.push(-1);
WaitForMultipleObjects(N, hd, TRUE, INFINITE);
for(n=1; n<N; n++) { cout<< "スレッド"<<n <<"の合計 "<<sum[n]<<endl; sum[0]+=sum[n]; }
cout<<"総和 "<<sum[0]<<endl;
getchar(); }
0029デフォルトの名無しさん
2010/06/03(木) 21:30:50003028
2010/06/03(木) 21:33:32http://en.sourceforge.jp/projects/freshmeat_tstl/
これBCCで動かしてもスレッド数が64超えるとバグるな。
こっちはヘッダ読み込みだけで動作して良い・
003128
2010/06/03(木) 21:41:10とデッドロックになりやすい。
TBBでもなったけど、Sleep(1)を一カ所入れたら平気。
安全度はTBB。
0032デフォルトの名無しさん
2010/06/03(木) 21:47:290033デフォルトの名無しさん
2010/06/03(木) 21:50:32HTTP受信が遅いとき
0034デフォルトの名無しさん
2010/06/03(木) 22:17:18BCCでは動きそうにない。
0035デフォルトの名無しさん
2010/06/03(木) 22:52:490036デフォルトの名無しさん
2010/06/03(木) 23:08:53そのコードなら間違いなくWindowsのせい。
http://msdn.microsoft.com/en-us/library/ms687025.aspx
WaitForMultipleObjectsで渡せる個数は最大MAXIMUM_WAIT_OBJECTS個と書いてあるが、
この値は64と定義されている。
ところで、ちゃんと戻り値やGetLastErrorが返す値を見ようよ。
65個以上渡したときには、どっちもエラーを意味する値になっているから。
0037デフォルトの名無しさん
2010/06/03(木) 23:16:460038デフォルトの名無しさん
2010/06/03(木) 23:29:12#include <tbb/concurrent_queue.h>
#pragma comment (lib, "tbb.lib")
#include <process.h>
#include <windows.h>
#include <iostream>
using namespace std;
using namespace tbb;
#define N 100
concurrent_queue<int> que;
int sum[N];
unsigned WINAPI fnc(void *n) {
int x, num=*(int*)n; delete n;
while(1) {
if( !que.try_pop(x) ) { Sleep(1); continue; }
if(x==-1) return 0; sum[num]+=x; Sleep(1); }}
void WaitObject_INFINITE( unsigned int ksu, HANDLE *hd) {
for(unsigned int n=0; n<ksu; n+=64) {
int k=ksu-n; if(k>64) k=64; WaitForMultipleObjects( k, hd, TRUE, INFINITE); }}
int main() {
HANDLE hd[N]; int n;
for(n=0; n<N; n++) sum[n]=0;
for(n=0; n<N; n++) { int *m=new int; *m=n; hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc, m, 0 ,NULL); }
for(n=0; n<=10000; n++) que.push(n);
for(n=0; n<N; n++) que.push(-1);
WaitObject_INFINITE( N, hd) ;
for(n=1; n<N; n++) { cout<< "スレッド"<<n <<"の合計 "<<sum[n]<<endl; sum[0]+=sum[n]; }
cout<<"総和 "<<sum[0]<<endl; getchar(); }
0039デフォルトの名無しさん
2010/06/03(木) 23:33:07#include <tbb/concurrent_queue.h>
#pragma comment (lib, "tbb.lib")
#include <process.h>
#include <windows.h>
#include <iostream>
using namespace std;
using namespace tbb;
#define N 100
concurrent_queue<int> que;
int sum[N];
unsigned WINAPI fnc(void *n) {
int x, num=*(int*)n; delete n;
while(1) {
if( !que.try_pop(x) ) { Sleep(1); continue; }
if(x==-1) return 0; sum[num]+=x; Sleep(1); }}
void WaitObject_INFINITE( unsigned int ksu, HANDLE *hd) {
for(unsigned int n=0; n<ksu; n+=64) {
int k=ksu-n; if(k>64) k=64; WaitForMultipleObjects( k, hd, TRUE, INFINITE); }}
int main() {
HANDLE hd[N]; int n;
for(n=0; n<N; n++) sum[n]=0;
for(n=0; n<N; n++) { int *m=new int; *m=n; hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc, m, 0 ,NULL); }
for(n=0; n<=10000; n++) que.push(n);
for(n=0; n<N; n++) que.push(-1);
WaitObject_INFINITE( N, hd) ;
for(n=1; n<N; n++) { cout<< "スレッド"<<n <<"の合計 "<<sum[n]<<endl; sum[0]+=sum[n]; }
cout<<"総和 "<<sum[0]<<endl; getchar(); }
0040デフォルトの名無しさん
2010/06/03(木) 23:38:33WaitForMultipleObjects( k, hd, TRUE, INFINITE);
→
WaitForMultipleObjects( k, &hd[n], TRUE, INFINITE);
0041デフォルトの名無しさん
2010/06/04(金) 04:55:570042デフォルトの名無しさん
2010/06/04(金) 13:13:350043デフォルトの名無しさん
2010/06/04(金) 17:06:25double operator^( const double lhs, const double rhs )
{
return pow(lhs,rhs);
}
のコンパイルが通りません。
error: ‘double operator^(double, double)’ must have an argument of class or enumerated type
というエラーが出てきます。
どうしたら良いのでしょうか?
0044デフォルトの名無しさん
2010/06/04(金) 17:11:25なんで引数が二つなの?
一つは自分自身でしょ
0045デフォルトの名無しさん
2010/06/04(金) 17:17:160046デフォルトの名無しさん
2010/06/04(金) 18:50:13namespace内のみ定義可能で、ローカルスコープでusingした時のみオーバーロド可能とかなら良かったのに
0047デフォルトの名無しさん
2010/06/04(金) 21:20:42ヘッダのクラス定義の中に書いちゃいますか?
0048デフォルトの名無しさん
2010/06/04(金) 21:27:150049デフォルトの名無しさん
2010/06/04(金) 21:38:08異なる箇所から頻繁に呼ばれる関数が多所に分散することで遅くなることもある。
0050デフォルトの名無しさん
2010/06/04(金) 21:39:470051デフォルトの名無しさん
2010/06/04(金) 21:41:41唯一の関数がレジスタとかにある方が速い。
片っ端に付けまくるとそういった高速アクセスが出来なくなるから遅くなる。
コンパイル時のオプションや実測後に変更すればいい。
はじめから付けると損。
0052デフォルトの名無しさん
2010/06/04(金) 21:49:30たまにpimpl
0053デフォルトの名無しさん
2010/06/04(金) 21:50:590054デフォルトの名無しさん
2010/06/04(金) 21:57:00インラインして関数が分散すれば、唯一高頻度の関数はなくなりキャッシュされない。
http://www.tzone.com/diy/topics/event/new-core-i7-online-nhl/new-core-i7-online-nhl.jsp
内蔵キャッシュメモリーをL3まで搭載
Core i7ではCPUコア個々に
1次キャッシュメモリ:命令用32KB+データ用32KB
2次キャッシュメモリ:256KBが搭載れさており、
さらに複数のCPUコアで共有する3次キャッシュメモリーが
8MBが搭載されています。
これによりプログラムから頻繁にアクセスされても
従来のCPUよりもシステム全体の速度を円滑に管理できます。
0055デフォルトの名無しさん
2010/06/04(金) 22:01:53PC雑記帳「CPUキャッシュの効果」
http://www7a.biglobe.ne.jp/~znotl/zakki/021102d.png
http://www7a.biglobe.ne.jp/~znotl/zakki/021102.html
0056デフォルトの名無しさん
2010/06/04(金) 22:04:090057デフォルトの名無しさん
2010/06/04(金) 22:04:33ボタン押してから画面に結果が表示されるまでのレスポンスがそんなに変わんのかよ
0058デフォルトの名無しさん
2010/06/04(金) 22:08:110059デフォルトの名無しさん
2010/06/04(金) 22:10:30埋め込みで効果あるのは、使われるところが一緒のみの場合。
コードの見やすさの為に関数化した場合だけ有効。
0060デフォルトの名無しさん
2010/06/04(金) 22:10:57以前は小物にはつけるようにしてたけど、ライブラリで間に合う事が多いから
そういったものを自分で定義することがなくなった
メンバ関数のインラインは通常1行で最大3行くらい。主にアクセッサ。
ただアクセッサを用意する設計はなるべく避けてるのであまり定義することはない
割と初学者やJavaやC#から流れてきた人ほどインラインしたがると思うんだけど偏見かなw
0061デフォルトの名無しさん
2010/06/04(金) 22:13:25templateクラスのメンバとかどうすんべ
0062デフォルトの名無しさん
2010/06/04(金) 22:13:54最終的なコードサイズが小さい方が速いことは気づくはずだが。
L1でもL2でもメモリでも速い方に収まっていた方が良いに決まってるが。
0063デフォルトの名無しさん
2010/06/04(金) 22:17:520064デフォルトの名無しさん
2010/06/04(金) 22:20:43C++だとまず遅くなるがな。
メモリに読みに行くより、関数コールと復帰のコストが高い場合。
C++、アセンブラだとそう複雑な手続き無いから、メモリ読む方が遅い。
0065デフォルトの名無しさん
2010/06/04(金) 22:35:25> 最終的なコードサイズが小さい方が速いことは気づくはずだが。
コードサイズは全く考えず、コードの読みやすさ・保守性だけ考えてます。速さなんぞ二の次
0066デフォルトの名無しさん
2010/06/04(金) 22:39:090067デフォルトの名無しさん
2010/06/04(金) 23:52:310068デフォルトの名無しさん
2010/06/05(土) 00:34:53これは蓄積・経験がないとプログラム出来ないようになっている。
経験少ないやつは太刀打ちできない仕組みになっている。
速度を求めるために書き換えるなら良いが。
第一言語にすべきではない。
0069デフォルトの名無しさん
2010/06/05(土) 00:37:02PHP、C#、HSP。
これだけあれば事足りる。
C言語より生産性は、10倍はいいな。
C言語で1ソフト開発している間に10個は出来る。
0070デフォルトの名無しさん
2010/06/05(土) 01:02:15でも10倍遅かったりバグったりしたら元も子もないよね
0071デフォルトの名無しさん
2010/06/05(土) 01:05:4110倍遅いくらいなら全然許容範囲。
むしろ、プログラムがシンプルになるのでバグが減る。
0072デフォルトの名無しさん
2010/06/05(土) 01:07:45なるほど。
では10倍が許容できない要件の場合はどうするの?
0073デフォルトの名無しさん
2010/06/05(土) 01:13:00これつかっとけ。PHP -> C言語 -> バイナリ
とコンパイルするコンパイラ。
速度はうまくやればC言語と変わらない。
0074デフォルトの名無しさん
2010/06/05(土) 01:14:33使わないけど。
0075デフォルトの名無しさん
2010/06/05(土) 03:15:28GUI中心にC++を捨て去れると思うが
0076デフォルトの名無しさん
2010/06/05(土) 03:29:550077デフォルトの名無しさん
2010/06/05(土) 03:39:49ただし配布できる形にはなっていない。
0078デフォルトの名無しさん
2010/06/05(土) 03:41:55単体のexeではなくて持ち運びが出来ない。
0079デフォルトの名無しさん
2010/06/05(土) 04:50:11外部txtファイルを複数回読み込むfunctionを作っているのですが、二回目以降が上手く読み込めません。
(Header省略)
void readfile (string &FileName, ifstream &inFile)
{
ifstream infile;
string FileName;
(中略)
for (int i = 0; i <3; i++)
{
cin >>FileName;
inFile.open(FileName.c_str());
while (inFile.fail())
{
inFile.clear();
cout << "invalid file name, re-enter:";
cin >> FileName;
inFile.open(FileName.c_str());
}
}
}
0080デフォルトの名無しさん
2010/06/05(土) 04:51:32http://codepad.org/txrScMGg
上記のように、グローバルな位置にenumを置くのはタブーなのでしょうか?
それとも、あっても障害にはならないからどうでもいいのでしょうか?
008179
2010/06/05(土) 04:54:21すいません。正しくは以下
(Header省略)
void readfile (string &FileName, ifstream &inFile)
{
for (int i = 0; i <3; i++)
{
cin >>FileName;
inFile.open(FileName.c_str());
while (inFile.fail())
{
inFile.clear();
cout << "invalid file name, re-enter:";
cin >> FileName;
inFile.open(FileName.c_str());
}
(中略・各種データ操作)
inFile.clear();
}
}
ソフトはMSVisual Studio2008
これ実行すると二回目以降、ファイルの名前指定すると必ずファイル名が違います言われるんです……何が悪いんでしょう
0082デフォルトの名無しさん
2010/06/05(土) 05:17:38unscoped enumは、その宣言されたスコープに、名前を導入するから、
その例のように、グローバル名前空間で、あまりにも簡単すぎる名前だと、
何かと面倒だな。
C++0xから導入される、scoped enumでは、そういう問題もなくなる。
0083デフォルトの名無しさん
2010/06/05(土) 05:45:27inFile.close(); してないから。
0084デフォルトの名無しさん
2010/06/05(土) 06:14:24違うなら、(中略・各種データ操作)の中にカレントディレクトリを変更する操作があるとか。
0085デフォルトの名無しさん
2010/06/05(土) 06:41:370086デフォルトの名無しさん
2010/06/05(土) 06:42:25最後のinFile.clearの後にinFile.close()入れても上手くいかないです・・
>>84
いや、txtから数列読み取って計算とかするだけでディレクトリ移動とかはしないです
008779
2010/06/05(土) 06:58:45(coutいくつか追加しただけ)
セーブせずにrunしたわけでもないのになんでよ。訳わからん
お騒がせしました・・・・
0088デフォルトの名無しさん
2010/06/05(土) 07:10:500089デフォルトの名無しさん
2010/06/05(土) 07:15:18> 100%まったく関係ないところを修正してからrunしなおしたら上手くいくようになりました
あるあるwwww
0090デフォルトの名無しさん
2010/06/07(月) 03:36:47Gdiplus::Graphics* g1 = Gdiplus::Graphics::FromHDC(hdc);
Gdiplus::Graphics* g2 = new Gdiplus::Graphics(hdc);
Gdiplus::GdiplusShutdown()
delete g1; //error
delete g2; //error
上記を実行しようとするとdelete部分でエラーが出てきます。
しかし、GdiplusShutdownの前にdeleteするときちんと解放されます。
これはdeleteしなくてもGdiplusShutdownがメモリを解放していると考えていいのでしょうか?
それともdeleteしないとメモリリークが発生するのでしょうか?
0091デフォルトの名無しさん
2010/06/07(月) 03:52:180092デフォルトの名無しさん
2010/06/07(月) 08:09:420093デフォルトの名無しさん
2010/06/07(月) 09:00:08DEF_SP_HOGE(int)
DEF_SP_HOGE(char)
DEF_SP_HOGE(short)
DEF_SP_HOGE(long)
・・・
#undef DEF_SP_HOGE
みたいな感じで局所的に使うマクロを重複させないテクニックみたいなのってありますか?
DEF_SP_HOGEが定義されてればDEF_SP_HOGE_で同じことをやって
それも定義されてたらDEF_SP_HOGE__・・・みたいな感じで
0094デフォルトの名無しさん
2010/06/07(月) 09:22:30局所的なやつはちゃんと #undef する。局所的じゃないやつはライブラリ名とか含めた
プリフィックス付きにする。これで問題ないだろ。
0095デフォルトの名無しさん
2010/06/07(月) 09:53:36setw(X)中に string + int + string を表示させるのってどうやるんだっけか
まぁ具体的には表示の番号割り振りで"[" int "]" みたいな修飾したいだけなんだけど
0096デフォルトの名無しさん
2010/06/07(月) 11:22:55setw()とやらの仕様は知らんが、文字列と数値を連結したいのならsprintf()かstringstreamかboost::format辺りではどうか。
# lexical_castでもできるか。
0097デフォルトの名無しさん
2010/06/07(月) 13:16:09「cout << setw (15) << "etcetc" << "blah"<<endl;」 すると
「etcetc_________blah」
になるみたいな。 解ると思うけどアンダーバーは空白でヨロ。
0098デフォルトの名無しさん
2010/06/07(月) 13:17:40違う数字を同じ例内で使うとかどんだけだ俺。
0099デフォルトの名無しさん
2010/06/07(月) 13:27:240100デフォルトの名無しさん
2010/06/08(火) 19:18:56C++では何使えばいいの?なんとなくstdio.hはインクルードしたくないんだけど
0101デフォルトの名無しさん
2010/06/08(火) 19:28:030102デフォルトの名無しさん
2010/06/08(火) 20:12:34つーか errno は気にならないのか?
0103デフォルトの名無しさん
2010/06/08(火) 20:34:30ありがとう
LinuxだとSocketつかうとerrnoにエラー設定するのよね
普通にperrorつかいます
0104デフォルトの名無しさん
2010/06/08(火) 21:56:03{
public:
void operator =(const Boo&){}
};
みたいに代入がオーバーロードされてるんですが
普通の代入したい場合はどうすればいいんでしょうか?
0105103
2010/06/08(火) 22:26:16ソケットのエラー出力してくれるけどWindowsはしてくれないのね
Windowsの場合はFormatMessage使って文字列取得するしかない?
できるだけコードは共通にしたいんだけど、、
0106デフォルトの名無しさん
2010/06/08(火) 23:40:56そのクラスにとってはそれが普通の代入だと思うんだが、明示的にシャローコピーをする方法があるかどうかって話かな。
ま、答えを持ち合わせていないんだけど。
0107デフォルトの名無しさん
2010/06/08(火) 23:42:32違う箇所を自分で実装したい、という事な気がする
端的に言うと無理なんだが
0108デフォルトの名無しさん
2010/06/08(火) 23:47:42{
public:
void ZeroMemory(){memset( a, 0, sizeof(a) );}
T a[100];
};
Tがプリミティブ型以外の時にZeroMemory()を読んだらエラーが出るようにしたいんですが可能ですか?
0109デフォルトの名無しさん
2010/06/08(火) 23:50:34それがいい設計かどうかは別の話
0110デフォルトの名無しさん
2010/06/08(火) 23:56:450111デフォルトの名無しさん
2010/06/08(火) 23:58:580112デフォルトの名無しさん
2010/06/09(水) 00:05:520113デフォルトの名無しさん
2010/06/09(水) 00:08:200114デフォルトの名無しさん
2010/06/09(水) 00:13:010115デフォルトの名無しさん
2010/06/09(水) 00:19:270116デフォルトの名無しさん
2010/06/09(水) 00:50:41誰もそんなこと言ってないだろ。
0117デフォルトの名無しさん
2010/06/09(水) 03:20:07え?
Cの構造体にポインタが持てないと
0118デフォルトの名無しさん
2010/06/09(水) 03:29:03メンバ関数・メンバ変数ポインタはPODに入れられるのかな?
入れても問題はなさそうだが。
0119デフォルトの名無しさん
2010/06/09(水) 03:37:26誰もそんなこと言ってないだろ。
0120デフォルトの名無しさん
2010/06/09(水) 03:44:220121デフォルトの名無しさん
2010/06/09(水) 03:47:350122デフォルトの名無しさん
2010/06/09(水) 08:15:250123デフォルトの名無しさん
2010/06/09(水) 08:27:15ISO C++ (2003) 3.9.1 [basic.fundamental] p7
> Types bool, char, wchar_t, and the signed and unsigned integer types are collectively
> called integral types. A synonym for integral type is integer type.
0124デフォルトの名無しさん
2010/06/09(水) 08:53:54ポインタが入ってたらmemcpyでバグるだろ
だからPODはポインタもっちゃダメ
0125デフォルトの名無しさん
2010/06/09(水) 08:58:25(ただし、どちらもリテラルの0から変換できることは保証されている)
それらを含む集成体も同様。だから「整数型以外」で間違ってないだろう。
0126デフォルトの名無しさん
2010/06/09(水) 09:00:190127デフォルトの名無しさん
2010/06/09(水) 09:08:48なんか誤解する人が出てきそうなんで突っ込み入れとくね。
POD がポインタを持つことはできる。
ポインタが所有権をあらわすものでない限り memcpy しても問題ない。
memcpy してバグとなるかどうかと POD の要件とは関係ない。
0128デフォルトの名無しさん
2010/06/09(水) 09:13:450129デフォルトの名無しさん
2010/06/09(水) 15:35:00メンバ関数を通してメンバの書き換えが可能だけど、呼び出し元の実体は書き換えられない、という感じです。
valueをmutable、Setをconstにしてconst Test&で受けとれば実現できますが、mutableの使用方法としてはよくないと思いますし。
class Test {
int value;
public:
void Set(int v) {
this->value = v;
}
};
void func(Test& test) {
test = Test(); //これは禁止したいけど、
test.Set(1); //これは許可したい。
}
void main() {
Test test;
func(test);
}
もう一つ。
テンプレートクラスで特定のテンプレート引数の時に呼んではいけない関数が存在するとします。
その時に関数を呼んでしまうと関数内でエラーが起きるので原因がわかりにくいのですが、何かわかりやすくする方法はありませんか?
static_ifを利用して無効な時にインスタンス化できない型を引数に取るようにして、
呼び出し元でエラーを起こすなんてことはできますけど、エラーメッセージの意味が若干変わりますよね。
0130デフォルトの名無しさん
2010/06/09(水) 15:41:15って無理だっけ?
0131デフォルトの名無しさん
2010/06/09(水) 15:42:390132デフォルトの名無しさん
2010/06/09(水) 15:50:56C++の参照は、参照先のすげ替えができない。つまり、元々int&はconstであると言える。
従って、int&にconstをつけることはできない。
0133デフォルトの名無しさん
2010/06/09(水) 16:05:49何がしたいのかよく解らんけどoperator = をprivateに持っていけば代入は禁止できるよ
0134デフォルトの名無しさん
2010/06/09(水) 17:20:37やりたいことはC#風のイベントです。
delegateもどきを作ったところまではよかったものの、上記2点で詰まりました。
>>130,>>132
最初に考えましたが、const無視するよという警告がでました。
>>131
delegateの引数の数分オーバーロードしてるので、特殊化クラスが10個になるのとどっちがマシかって話になりますね…
今回の場合は引数が間違っているというメッセージでも大体意味が通るので、とりあえずこれでいきます。
>>133
これもイベントの話なのですが、イベント送信者を受信側で操作できるようにするにはどうすればいいかなと。
代入禁止は別のところにまで影響するので避けたいです。
0135デフォルトの名無しさん
2010/06/09(水) 18:31:10めんどくさいけどそのクラスをラップして代入以外をpublicにすればおk
http://codepad.org/FfSqsZlq
0136デフォルトの名無しさん
2010/06/10(木) 10:47:31メモリプールを自動で行うライブラリのような物だが。
標準のメモリ管理(free、newとか)より遅くなることをある。
プールよりstaticやグローバルで確保しておいた方が良いかもしれない。
0137デフォルトの名無しさん
2010/06/10(木) 19:39:21anyは、たとえばvector<string>入れたら全ての操作可能ですか。resize(n)とか。
0138デフォルトの名無しさん
2010/06/10(木) 20:14:02一生スクリプト言語いじってなw
0139デフォルトの名無しさん
2010/06/10(木) 20:22:390140デフォルトの名無しさん
2010/06/10(木) 21:51:32安全にキャストできるから心配すんな
ダックタイピングしたけりゃboost::variant使え
0141デフォルトの名無しさん
2010/06/10(木) 22:08:58みたいな質問を時々見たが、最近はスクリプトだな
0142デフォルトの名無しさん
2010/06/11(金) 13:13:200143デフォルトの名無しさん
2010/06/11(金) 13:21:53std::string wchar2char(const std::wstring x){
int m=x.size(); if(m<=0) return 0;
std::string y(3*m,'\0');
m=WideCharToMultiByte(CP_ACP, 0, &x[0], m, &y[0], 3*m, NULL, NULL);
y.resize(m); return y; }
std::string wchar2char(wchar_t x){ return wchar2char( std::wstring(x,1) ); }
//
std::wstring char2wchar(const std::string x){
int m=x.size(); if(m<=0)return 0;
std::wstring y(m, L'\0');
m=MultiByteToWideChar(CP_ACP, 0, &x[0], m, &y[0], m);
y.resize(m); return y;}
std::wstring char2wchar(char x){ return char2wchar( std::string(x,1) ); }
0144デフォルトの名無しさん
2010/06/11(金) 14:08:190145デフォルトの名無しさん
2010/06/11(金) 14:10:240146デフォルトの名無しさん
2010/06/11(金) 14:24:180147デフォルトの名無しさん
2010/06/11(金) 14:40:11{
static const int BOO = 100;
}
この場合、staticは付けない方がいいんですか?
0148デフォルトの名無しさん
2010/06/11(金) 15:56:490149デフォルトの名無しさん
2010/06/11(金) 17:41:58同一の名のメソッドを持っているインターフェースを、
多重継した場合の記述の方法がわかりません。
それぞれのインターフェースのメソッドには、
別の挙動を記述できたらと思っております。
現在は、下記のように記述したところ、
コンパイルエラーとなっております。
よろしければ記述方法を教えていただけますでしょうか・・・
ヘッダ側--------------------------------------
class interfaceA {
public : virtual void exec() = 0;
}
class interfaceB {
public : virtual void exec() = 0;
}
class C : A, public B {
public : virtual void A::exec();
public : virtual void B::exec();
};
ソース側--------------------------------------
public : virtual void A :: exec(){
}
public : virtual void B :: exec(){
}
0150デフォルトの名無しさん
2010/06/11(金) 17:57:360151デフォルトの名無しさん
2010/06/11(金) 18:03:18同一名のメソッドはprivateにしてラッパーかませろ
設計段階でそうするべき
後から分かってリファクタリングしても遅い
0152デフォルトの名無しさん
2010/06/11(金) 18:25:21大抵他の方法がある
0153デフォルトの名無しさん
2010/06/11(金) 18:28:110154デフォルトの名無しさん
2010/06/11(金) 19:46:13void C :: A :: exec(){
}
void C :: void B :: exec(){
}
でした。
また、下記のようにヘッダ側に処理を記述した場合はコンパイルはとおりました。
class C : A, public B {
public : virtual void A::exec() { //A向けの処理 }
public : virtual void B::exec() { B向けの処置 }
};
できればソース側に記述したいところです。
C#では別インターフェースの同名メソッドを、
明示的に指定してそれぞれて別の挙動を実装できておりました。
C#の元になったC++では出来るのかなと思い質問してみました。
0155デフォルトの名無しさん
2010/06/11(金) 19:58:38A B をそれぞれ private継承し A' B' などのラッパーを作成、
メソッド名は execA や execB などのかぶらない物をを用意しておく。
その A' B' を継承して Cを作成という流れ出よろしいのでしょうか・・・。
0156デフォルトの名無しさん
2010/06/11(金) 20:00:450157デフォルトの名無しさん
2010/06/11(金) 20:04:10return 0; はダメ
0158デフォルトの名無しさん
2010/06/11(金) 20:04:490159デフォルトの名無しさん
2010/06/11(金) 20:12:320160デフォルトの名無しさん
2010/06/11(金) 20:27:030161デフォルトの名無しさん
2010/06/11(金) 20:39:500162デフォルトの名無しさん
2010/06/11(金) 23:00:14下のように書いたら関数ポインタを使わずにinline展開してもらえるかな?
template <unsigned int N> inline void func_impl(...)
{
if(再帰するなら) func<N + 1>func_impl(...); else // ...
}
template <> inline void func_impl<100>(...)
{
assert(false);
}
inline void func(...)
{
func<0>(...);
}
int main(void) { func(...); return 0; }
0163デフォルトの名無しさん
2010/06/11(金) 23:08:59そのコードの意味がよく判らんが、テンプレートでの再帰はきちんと展開するよ。
例えば、階上を計算するテンプレート関数は定数になってくれる。
アセンブリ出力見れば判るべさ。
0164デフォルトの名無しさん
2010/06/12(土) 07:46:03template<int N>void func()
{
func<N-1>();
}
template<>void func<0>()
{
}
int main()
{
func<100>();
0165デフォルトの名無しさん
2010/06/12(土) 14:11:090166デフォルトの名無しさん
2010/06/12(土) 22:08:45class B のV[n]を参照することは出来ますか? V[n]は自分以外のもので。
class A { public: int n; string s; };
class B { public: vector<A> V; };
0167デフォルトの名無しさん
2010/06/12(土) 22:10:230168デフォルトの名無しさん
2010/06/12(土) 22:21:06クラスの定義の時点で可能ですか?
B b;と変数宣言してあればアクセス可能ですが。
0169デフォルトの名無しさん
2010/06/12(土) 22:26:340170デフォルトの名無しさん
2010/06/12(土) 22:35:310171デフォルトの名無しさん
2010/06/12(土) 23:02:54#include <iostream>
#include <vector>
#include <string>
using namespace std;
class A { public: int ban; string name; A( int a, string b ){ ban=a; name=b; } };
class B;
class C { public: B *b; int num; string fullpath(); };
class B { public: vector<A> V; C operator [] ( int n ) { C c; c.b=this; c.num=n; return c; } };
string C::fullpath() {
string s; int k=num;
do { s = (b->V[k]).name + "/" + s; k=b->V[k].ban; } while( k!=-1 );
return s; }
int main(){
B b;
b.V.push_back(A(-1,"C:/one"));
b.V.push_back(A(0,"two"));
b.V.push_back(A(1,"three"));
cout<< b[2].fullpath()<<endl; }
0172デフォルトの名無しさん
2010/06/12(土) 23:17:09安易に演算子オーバーロードしても読みにくくなるだけだと思う。
0173デフォルトの名無しさん
2010/06/12(土) 23:25:04としたいところを手を加えたんですよ。
A&から他のAにアクセス出来ないので。
0174デフォルトの名無しさん
2010/06/12(土) 23:28:06V[n]のみのリターンでは出来なかったVへのアクセスを実現します。
0175デフォルトの名無しさん
2010/06/12(土) 23:30:53普通 b[2]って言ったら2に対応付けられた値だけ返ってくることを期待するでしょうが。
0176デフォルトの名無しさん
2010/06/13(日) 06:27:24string B::path(int n)みたいな関数にしたほうがいいと思う。
0177デフォルトの名無しさん
2010/06/13(日) 11:39:03[]が先の方が良かったけど複雑だしな
0178デフォルトの名無しさん
2010/06/13(日) 11:46:31こんなもの全くいらないし
fortran的に考えて
0179デフォルトの名無しさん
2010/06/13(日) 12:19:12その役目はイテレータだけどな。
0180デフォルトの名無しさん
2010/06/13(日) 12:19:56オペレーターオーバーロードは、それで記述が簡潔になる場合にしか使わないし。
0181デフォルトの名無しさん
2010/06/13(日) 12:22:350182デフォルトの名無しさん
2010/06/13(日) 12:26:48一次元のコンテナがあれば[]で何次元でも作れるのに?
0183デフォルトの名無しさん
2010/06/13(日) 12:28:20それじゃあ生成・破棄の効率がクソ悪いだろ
0184129
2010/06/14(月) 16:23:42いまいち伝わってないというか、上手く説明ができてなかったようなので言い方変えると、
class Test {
int value;
public:
void Set(int v) {
this->value = v;
}
};
void func(Test* t) {
t->Set(1); //これでfunc()の呼び出し元のtest.valueを変更したいけど、
//*t = Test(); //これができると呼び出し元のtest自体が書き変わってしまうので禁止できないか?
}
void main() {
Test test;
func(&test);
}
イベントでいうと以下のようなことをやりたいのですが、Senderの実体を書き換えられるのは困りますよね。
ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-018.html
イベントなのでどんなクラスにも対応しなければならず、ラップして代入禁止というのは無理です。
ポインタで渡して実体を書き換えないように気を付けるのが普通なんでしょうか。
0185デフォルトの名無しさん
2010/06/14(月) 16:45:050187デフォルトの名無しさん
2010/06/14(月) 17:19:510188129
2010/06/14(月) 18:11:57そう考えると、やらないように気を付けるでいいのかな。
言い間違いのつもりだったけど、いまいち理解できてなかったのかも。
ありがとうございました。
0189デフォルトの名無しさん
2010/06/15(火) 01:18:550190デフォルトの名無しさん
2010/06/15(火) 09:50:050191デフォルトの名無しさん
2010/06/15(火) 10:27:040192デフォルトの名無しさん
2010/06/15(火) 10:32:41じゃあ代入禁止でおk。boost::noncopyableでもおk
しかし>>190が意味不明だ
0193デフォルトの名無しさん
2010/06/15(火) 10:37:44void __fastcall TForm::ButtonClick(TObject * const Sender)
0194190
2010/06/15(火) 12:08:46ちょっときびしいか?
0195デフォルトの名無しさん
2010/06/15(火) 13:07:280196デフォルトの名無しさん
2010/06/15(火) 13:10:09x86アセンブラのほうが覚えること少なくてらくでしょ。
基本はmovとcmpとjmpだけでよいし。
0197デフォルトの名無しさん
2010/06/15(火) 13:37:450198デフォルトの名無しさん
2010/06/15(火) 17:24:460199デフォルトの名無しさん
2010/06/15(火) 17:38:270200デフォルトの名無しさん
2010/06/15(火) 17:57:390201デフォルトの名無しさん
2010/06/15(火) 18:04:520202デフォルトの名無しさん
2010/06/15(火) 18:37:000203デフォルトの名無しさん
2010/06/16(水) 00:02:08もっとも、いい選択肢だよ
0204デフォルトの名無しさん
2010/06/16(水) 00:15:530205デフォルトの名無しさん
2010/06/16(水) 00:25:28吐き気がする位遅い
0206デフォルトの名無しさん
2010/06/16(水) 00:35:240207デフォルトの名無しさん
2010/06/16(水) 00:47:380208デフォルトの名無しさん
2010/06/16(水) 01:36:11フレームワークより使いにくいのは仕方ないだろ
それ以前の負の遺産を引きずってるんだから
0209デフォルトの名無しさん
2010/06/16(水) 11:33:010210デフォルトの名無しさん
2010/06/16(水) 12:21:55元質問は自己解決したんですが、良く分からなかった事があるので教えてください。
多重継承しているクラスがあります。
class Derive : public Base, public Listener{
で、他の関数にthisポインタを渡そうとしてます。
Derive::func(void){
thread->SendRequest(this, data);
}
SendRequestはこんな感じです。
void SendRequest(Listener *listener, int data);
SendRequestを呼び出す前のthisのアドレスが、
呼ばれたSendRequest内の引数listenerでは+4されていたのは何故でしょうか。
VC++2008です。
すみませんがよろしくお願いいたします。
0211デフォルトの名無しさん
2010/06/16(水) 12:30:33Derive の中には Base部分と Listener部分が含まれている。
おそらく、先頭4バイトがBase部分で、その後にListener部分が続いていたんだろう。
0212デフォルトの名無しさん
2010/06/16(水) 12:37:32確かに
class Derive : public Listener, public Base
としたら+4されなくなりました。
0213デフォルトの名無しさん
2010/06/16(水) 16:24:540214デフォルトの名無しさん
2010/06/16(水) 19:24:22void foo(const A* const a) { }
void bar() { foo(&A()); }
これはまずい?
const参照使えば大丈夫なのは知ってるんだが
ポインタだとダメ?
0217デフォルトの名無しさん
2010/06/16(水) 21:10:090218デフォルトの名無しさん
2010/06/16(水) 21:19:22こんぱいるできたか?
0219デフォルトの名無しさん
2010/06/16(水) 22:23:400220210
2010/06/16(水) 23:48:01一応コンパイルは通るし、fooの引数aもスタック上のオブジェクトを指してるっぽい。
…でも出来る出来ない以前にちとダサいと思うw
0221デフォルトの名無しさん
2010/06/16(水) 23:51:100222210
2010/06/16(水) 23:52:290223デフォルトの名無しさん
2010/06/17(木) 07:39:57PC性能が上がってきて、速度とかあんまり気にする必要がなくなってきてる気がして・・・。
あ、趣味グラマです。
0224デフォルトの名無しさん
2010/06/17(木) 07:51:350225デフォルトの名無しさん
2010/06/17(木) 17:30:410226デフォルトの名無しさん
2010/06/17(木) 17:49:340227デフォルトの名無しさん
2010/06/17(木) 17:58:14当時より大きく遅くなっているが今のハードだと問題にならない
0228デフォルトの名無しさん
2010/06/17(木) 22:58:500229デフォルトの名無しさん
2010/06/17(木) 23:00:030230デフォルトの名無しさん
2010/06/17(木) 23:02:53いいえペンです
0231デフォルトの名無しさん
2010/06/17(木) 23:06:04reallocしないならば静的確保だというのですか?
0232デフォルトの名無しさん
2010/06/17(木) 23:06:220233デフォルトの名無しさん
2010/06/18(金) 11:07:40/)
///)
/,.=゙ ''"/
/ i f ,.r='"-‐' つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0234デフォルトの名無しさん
2010/06/18(金) 16:50:25すると、全く同じプログラムなのに結果が違う。ちなみにMATLABの結果は
VC++の結果と一致している。
2日ほど悩んでいたが...
原因は、何と自作のライブラリファイルで使っていたabs関数に「std::」をつけて
いないことだったorz。
xをdouble型の変数としてabs(x)を呼べば関数のオーバーロードによって
double abs(double x) が呼び出されると思っていたのにgccではint abs(int i)
が呼び出されていて結果が違っていた。xがdoubleであってもintに型キャスト
されるため整数部(の絶対値)のみが返ってきていた。
これはC++の数学関数が標準名前空間std内にあることによるのだろうが
(ちなみに #include <cmath>としている)、VC++では「std::」をつけなく
ても問題なく、double abs(double x) が呼ばれている。
C++の仕様としては、gccとVC++どちらが正しいでしょうか?
「std::」をつけなくてもコンパイルエラーや警告がでず、意図しない
別のabsが呼ばれるgccの方が怖いですけど。
0235デフォルトの名無しさん
2010/06/18(金) 17:05:49BasicHoge * CreateHoge(uint8_t n)
{
switch(n)
{
case 0: return new Hoge<0>;
case 1: return new Hoge<1>;
・・・
}
}
int main() { BasicHoge *p = CreateHoge(Rand8()); ・・・; }
上のようなことをしたいんだけど
1〜uint8_tの最大まで書くのがめんどいんだけど
うまいこと実行時の整数をコンパイル時の整数にマッピングする方法ってない?
0238デフォルトの名無しさん
2010/06/18(金) 19:51:40gcc 4.3以降なら-Wconversionで警告出せるよ。
警告出ないと確かに怖いね。
0239デフォルトの名無しさん
2010/06/19(土) 01:43:51インクルードせずにプログラムを作るには、一体どうしたらいいんでしょう?
色々と調べ回ったのですが、大体がLinuxでのことしか書いてないし、Windowsでのもの
も、実際にコードにしたら、Windowsから不正だのなんだのと言われて、プログラムが止まってしま
うんですが…
例えば、int 21hとか
0240デフォルトの名無しさん
2010/06/19(土) 01:45:35常識
0241デフォルトの名無しさん
2010/06/19(土) 03:28:08ヘッダーインクルードを忌避する理由は何?
Windows API (Linux のシステムコールに相当) を呼び出すには call 命令を使うが、その
飛び先 (API を提供している DLL のエントリポイント) をリンクするのはアセンブラでは
煩雑と言うか面倒と言うか忘れたと言うか、使用するアセンブラによる。
API を呼び出すのにかかるコストは、C/C++ の関数形式でもアセンブラの call 命令でも
全く変わらない。
せっかく C++ なのだから、素直に windows.h をインクルードするのが吉。
int 21h で有名なのは MS-DOS ファンクションコールだが、Windows アプリでは (デバイス
ドライバを書いて特権を取得しない限り) そもそも int 命令が禁止されていて、MS-DOS
ファンクションコールは一切使えない (プログラムが不正終了するのはおそらくそのせい)。
MS-DOS アプリが動作するのは、MS-DOS ファンクションコールがエミュレートされている
から (64bit OS では 16bit アプリをサポートしないため MS-DOS アプリは動作しない)。
0242デフォルトの名無しさん
2010/06/19(土) 04:55:33それを直にやりたいんだろ。
アセンブラ。
0243デフォルトの名無しさん
2010/06/19(土) 05:41:160244デフォルトの名無しさん
2010/06/19(土) 07:05:44その方法を自分で調べられん奴が一体何をするつもりなんだろうね
0245デフォルトの名無しさん
2010/06/19(土) 08:44:240246デフォルトの名無しさん
2010/06/19(土) 08:50:18STL以外での使い道に心当たりがある方お願いします。
0247デフォルトの名無しさん
2010/06/19(土) 08:55:18今はintとかin/outとかhaltとか好きに呼べない
ま、安全のためだから仕方がないが
0248デフォルトの名無しさん
2010/06/19(土) 15:59:100249デフォルトの名無しさん
2010/06/19(土) 20:30:21STLで足りない理由を明確にすることかな
0250デフォルトの名無しさん
2010/06/20(日) 02:09:03作り方: http://msdn.microsoft.com/en-us/magazine/cc301955.aspx
規格(の草案): http://www.kuzbass.ru/docs/isocpp/lib-iterators.html#lib.iterator.requirements
0251デフォルトの名無しさん
2010/06/20(日) 06:28:27#define YAMA 0
#define KAWA 1
#define HAIRETUNOKAZU 20
とかを使いまくってるのですが、これは話にならないくらいの糞コードなんでしょうか?
static const HAIRETUNOKAZU = 20
みたいにするのが業界標準なんでしょうか?
0252デフォルトの名無しさん
2010/06/20(日) 06:35:44void kansuu(int number);
みたいに書きまくってるけど
void kansuu(const int number);
for文も
for( a=0 ; a<10 ; a++ )
みたいに書きまくってるけど
for( a=0 ; a<10 ; ++a )
if文も
if( n=10 )
と書きまくってるけど
if( 10=n )
と書かないと業界では鼻で笑い飛ばされて帰っていいよと言われる糞コードなんでしょうか?
0253デフォルトの名無しさん
2010/06/20(日) 06:38:42他については決してそんなことはないというか、
void kansuu(const int number) ってのは void kansuu(int number) と同じシグネチャだから
逆に混乱を招きかねないって意見も多くあるし、
if ( 10 == n ) についても同じ
0254デフォルトの名無しさん
2010/06/20(日) 06:49:13for文は++aのがデータのメモリ間のコピーだかなんだかの処理がa++より一回少なくて高速だと聞いたのですが、
それほどその程度の速度を意識したことなかったし、大抵の初心者サイトで最初に教えられるのはa++だから惰性で続けてました。
ほかにも構造体を関数へ渡すときは
kansu(KOUZOUTAI)
void kansu(KOUZOUTAI)
kansu(&KOUZOUTAI)
void kansu(*KOUZOUTAI)
kansu(KOUZOUTAI)
void kansu(&KOUZOUTAI)
みたいないろんなやり方があって自分は2番目を常用してますが、これは好みでしょうか?
DirectxのSDKなどでは2番目で使用する前提の関数が多く用意されてるのでこれがプログラマ達の標準だと思ってました。
他の方でも知っておられたら教えてください。
0255デフォルトの名無しさん
2010/06/20(日) 07:29:4210=nというその例のようなミスを防ぐためにはいいのかもしれないけど、それは強制しないし
n=10と書いても警告が出るからn=10を推奨。10=nは逆に禁止したいぐらい。
値を変更するなら3番目、kansu(*KOUZOUTAI)のtypoだよね?
変更しないならconst参照で受けるのがいい。
鼻で笑い飛ばして帰っていいよとは言わないけど、上記のようなことを説明をしつつ伝える。
0256デフォルトの名無しさん
2010/06/20(日) 07:38:26Googleのコーディング規約では入力パラメータがconst参照渡し、出力パラメータがポインタ渡しになってるな。
どっちにしろ値を渡す目的ではconst参照渡しを使うのがいいと思う。
0257デフォルトの名無しさん
2010/06/20(日) 08:00:54自分で組んでる分にはわざわざconstなんて付けないし、
人との共同でも値変更があるかはプログラム設計書に明記してりゃいいやと思ってたけど、
安全で安心ではありますね。
0258デフォルトの名無しさん
2010/06/20(日) 08:05:260259デフォルトの名無しさん
2010/06/20(日) 08:26:341番目は値渡し(コピー)。
2番目はポインタ渡し。
3番目は参照渡し。
のつもりじゃないだろうか。
0260デフォルトの名無しさん
2010/06/20(日) 08:34:40ポインタ派参照派どちらの派閥をとわずご満足いただけます
0261デフォルトの名無しさん
2010/06/20(日) 08:36:160262デフォルトの名無しさん
2010/06/20(日) 09:00:110263デフォルトの名無しさん
2010/06/20(日) 11:58:090264デフォルトの名無しさん
2010/06/20(日) 12:15:56そもそもメソッドのパラメータとして記述できるのはparamsとrefとoutだけじゃね
0265デフォルトの名無しさん
2010/06/20(日) 12:25:400266デフォルトの名無しさん
2010/06/20(日) 12:31:13ref使うのは特殊なケースだろう
間接参照でImmutable保証出来ないのはJavaにしろPythonにしろ同じだし
0267デフォルトの名無しさん
2010/06/20(日) 13:48:190268デフォルトの名無しさん
2010/06/20(日) 14:33:30const参照渡しが推奨される理由が分からないorz
constポインタ(?)とかじゃダメなの?
0269デフォルトの名無しさん
2010/06/20(日) 14:38:25const参照ならテンポラリオブジェクトも取れる
そしてクライアントの手間が省ける
0270デフォルトの名無しさん
2010/06/20(日) 16:44:04あわわ。寝ぼけてたみたいでorz
指摘ありがとうです。
>>257でちゃんと伝わってたようで安心した。
0271デフォルトの名無しさん
2010/06/20(日) 18:36:12templateよりdefine関数の方が一般的?
0272デフォルトの名無しさん
2010/06/20(日) 18:50:47# defineは関数ではない
0273デフォルトの名無しさん
2010/06/20(日) 18:54:58マクロ展開
0274デフォルトの名無しさん
2010/06/20(日) 19:49:27うむ。orz
0275デフォルトの名無しさん
2010/06/20(日) 20:16:02プリプロセッサにとっての関数とも言えるので
いいんじゃない
0276デフォルトの名無しさん
2010/06/20(日) 20:16:550277デフォルトの名無しさん
2010/06/20(日) 21:06:040278デフォルトの名無しさん
2010/06/21(月) 00:09:08ヘッダーインクルードを忌避しているわけではなくて>>243が言っている通り、車輪の再開発をしたいのです。
まだ学生の身なので、よりハードウェアに近いところを勉強したくて…
CPUをスーパーバイザモードで動かせば、メモリの好きなアドレスに書き込みが出来るかな、と思って、
ハードウェア直叩きで映像を表示出来れば、DirectX等のコンポーネントを使う時も理解が深まると
>>245
関数プロトタイプ宣言を用意してみても、実体が無い関数だからリンクが出来ないと言われております
0279デフォルトの名無しさん
2010/06/21(月) 01:06:480280デフォルトの名無しさん
2010/06/21(月) 01:18:570281デフォルトの名無しさん
2010/06/21(月) 02:18:440282デフォルトの名無しさん
2010/06/21(月) 03:45:52exeが大きくなるぶん消費量は増えるのでは
浪費というとおかしいけど。
0283デフォルトの名無しさん
2010/06/21(月) 03:53:190284デフォルトの名無しさん
2010/06/21(月) 04:10:45>>280は流れをみれば、defineはリソースを浪費するが、templateは浪費しないだろ、って論調じゃん
そうじゃなきゃそのレスにはならない
0285デフォルトの名無しさん
2010/06/21(月) 04:12:53defineの方が大きくなりそうといえばなりそうなんだけど。
0286デフォルトの名無しさん
2010/06/21(月) 04:13:240287デフォルトの名無しさん
2010/06/21(月) 12:18:33残念ながら、Windows は抽象化というものを行っており、デバイスドライバを除くすべての
ソフトはスーパーバイザモードに移行できず、従ってハードウェアに近いコードを書く事は
できない。
ただし、抽象化というのは全く異なるハードウェア上で同一のバイナリが実行できるという
点で歓迎すべきものと同時に、ユーザーモードのアプリに下手な動作をさせずシステムを
クラッシュさせないという安定性の確保の観点から重要なもの。
どうしてもハードウェアを直叩きしたいという場合にはデバイスドライバを書くしかないが、
それはシステムの安全を考慮した高い品質のコードを慎重に書かねばならない上、それ
をするにはそもそもハードウェアの仕様を知らなければならないが大抵の場合メーカーは
ハードウェアの仕様を公開していないため事実上不可能 (メーカーの提供するデバイス
ドライバをリバースエンジニアリングして仕様を解析するという手段も無いではないが、それ
はそれでプログラミングとは別のスキルが要る)。
Windows 上で普通にプログラミングしている限り、ハードウェアに直接触れる事はできない
し、意識する必要も無い。
せいぜいが DirectX を利用したらハードウェアに近い事をした、と思っておく程度。
ミドルウェア・ファームウェア開発者を目指すのでなければ、それ以上の知識は不要だし、
邪魔になる事もある。
これ以上の話はスレ違いかな?
0288デフォルトの名無しさん
2010/06/21(月) 12:30:240289デフォルトの名無しさん
2010/06/21(月) 12:44:09あとにどとくんな。
0290デフォルトの名無しさん
2010/06/21(月) 12:45:55アセンブラは基本的に全ての命令をサポートしてるよ。ただそれだけ。
そうじゃなければOSのコア作る人はどうすればよいのかと。
0291デフォルトの名無しさん
2010/06/21(月) 13:19:350292デフォルトの名無しさん
2010/06/21(月) 16:02:15今流行のマルチコアを活用したプログラムとかSSE2/SSE3/SSE4をバリバリ
使ったプログラムを書くにはインラインアセンブリしかあるまい。
そういう意味ではx86-64でC言語でインラインアセンブリを禁止したのはおかど
違いだと思う
0293デフォルトの名無しさん
2010/06/21(月) 16:06:50> 残念ながら、Windows は抽象化というものを行っており、ハードウェアに近いコードを書く事はできない。
0294デフォルトの名無しさん
2010/06/21(月) 16:07:53> Windows 上で普通にプログラミングしている限り、ハードウェアに直接触れる事はできないし、意識する必要も無い。
0295デフォルトの名無しさん
2010/06/21(月) 17:18:15何ですかコレ
0296デフォルトの名無しさん
2010/06/21(月) 17:58:16触るな
バカがうつるぞ
0297デフォルトの名無しさん
2010/06/21(月) 17:59:46触るな
バカがうつるぞ
0298デフォルトの名無しさん
2010/06/21(月) 18:06:01何ですかコレ
0299デフォルトの名無しさん
2010/06/21(月) 18:13:570300デフォルトの名無しさん
2010/06/21(月) 18:19:140301デフォルトの名無しさん
2010/06/21(月) 21:21:510302デフォルトの名無しさん
2010/06/21(月) 21:28:38インラインアセンブリなんてもともと曲がったものだからな
アセンブラで書く必要のあるものは割り切ってアセンブラで書くべきで
それをまだ asm が予約語だからとしがみついてるアフォが板杉
0303デフォルトの名無しさん
2010/06/21(月) 21:34:18効率悪い
0304デフォルトの名無しさん
2010/06/21(月) 21:45:44命令シーケンスの連続性に意味があるコードに高級言語を混ぜる書くアフォは氏んでいい
0305デフォルトの名無しさん
2010/06/21(月) 21:47:540306デフォルトの名無しさん
2010/06/21(月) 21:50:000307デフォルトの名無しさん
2010/06/21(月) 21:53:070308デフォルトの名無しさん
2010/06/21(月) 22:55:45class AbstractHoge {
(略)
};
class A : public AbstractHoge {
public:
B toB();
};
class B : public AbstractHoge {
public:
A toA() {
};
これが通らないのは、仕様?
0309デフォルトの名無しさん
2010/06/21(月) 22:57:040310デフォルトの名無しさん
2010/06/21(月) 22:58:010311デフォルトの名無しさん
2010/06/21(月) 23:24:11templateは型ごとに関数が個別に作られる
マクロはその場に展開
後は分かるな?
0312デフォルトの名無しさん
2010/06/21(月) 23:29:02どちらでも変わらないかもね
普通は#defineの方が肥大化するだろうけど
0313デフォルトの名無しさん
2010/06/21(月) 23:30:37複数箇所へ埋め込んだらdefineがおおい。
メンバ関数が多くあれば使わない部分まで生成されるテンプレートが大きい。
0314デフォルトの名無しさん
2010/06/21(月) 23:37:480315デフォルトの名無しさん
2010/06/21(月) 23:44:420316デフォルトの名無しさん
2010/06/21(月) 23:49:42組み込みの場合、引数付きマクロはテンプレートの代りに
用いられるわけではなくて、レジスタやメモリマップドI/Oへの統一的な
アクセスを提供するためとかじゃないかね
他には既存Cシステムからの流れからというのもあるだろうね
それとメーカーの提供してるサンプルがCだったりすることも影響してると思う
0317デフォルトの名無しさん
2010/06/21(月) 23:57:51defineは複数箇所に展開されたらかさふえる。
サイズがでかくなって良い場合はdefine。
しかし単一箇所にコードがあった方が速度上がるだろうから
define使う利点無し。
0318デフォルトの名無しさん
2010/06/22(火) 00:01:41みたいな関数でもインライン展開しない方がいい?
0319デフォルトの名無しさん
2010/06/22(火) 00:04:310320デフォルトの名無しさん
2010/06/22(火) 00:24:10ありがとうございます。
0321デフォルトの名無しさん
2010/06/22(火) 01:12:46SeSecurityPrivilegeが有効になっていないためエラーになります。
そのコードがC++からコマンドラインを呼び出して設定しているという形になっています。
コマンドラインで使用しているツールはsubinaclです。
SeSecurityPrivilegeを有効にするための関数などC++であったら
ヒントでもいいので教えていただきたいのですが
何卒よろしくお願いします。
0322デフォルトの名無しさん
2010/06/22(火) 01:47:53"SeSecurityPrivilegeが有効になっていない"みたいなエラーが出るって話かな。
C言語レベルの話だし、Windows限定じゃん。WinAPIのスレで質問した方がよくね。
http://pc12.2ch.net/test/read.cgi/tech/1274949734/l50
0323デフォルトの名無しさん
2010/06/23(水) 01:04:110324デフォルトの名無しさん
2010/06/23(水) 01:05:180325デフォルトの名無しさん
2010/06/23(水) 03:22:360326デフォルトの名無しさん
2010/06/23(水) 05:30:22関数オブジェクトとかコピーコンストラクタとかfriendなoperatorとか、お前のノーミソはパニックだろw
0327デフォルトの名無しさん
2010/06/23(水) 11:48:23交換則が成り立たない加法演算子とか、反対称則の成り立たない比較演算子とか定義して、
テンプレートあたりで意図せず使ってしまい、破錠しないかってのはすごい気になる……。
0328デフォルトの名無しさん
2010/06/23(水) 11:53:560329デフォルトの名無しさん
2010/06/23(水) 12:24:28おまえはC++をちゃんと勉強してきたのか?
0330デフォルトの名無しさん
2010/06/23(水) 13:24:17overloaded operators for classes should behave like operators for builtin types
0331デフォルトの名無しさん
2010/06/23(水) 13:36:120332デフォルトの名無しさん
2010/06/23(水) 20:04:55が言いたいのは
>>329-330
> overloaded operators for classes should behave like operators for builtin types
shouldなだけで守られるとは限らないじゃないか。
stdのiostreamを思いだそう!
ってことじゃないのかな?
そして>>327が言う問題って、Conceptさんの力があれば解決できるの?
C++0xはよーしらんのだが。
0333デフォルトの名無しさん
2010/06/23(水) 20:13:24int+hoge が hoge::operator+(int)に一致するようなことを危惧してるの?そんなことはないから。
0334デフォルトの名無しさん
2010/06/23(水) 20:14:59???
0335デフォルトの名無しさん
2010/06/23(水) 21:39:22int+hoge
hoge+int
が同じにならない可能性があることを危惧しているのではないのか
0336デフォルトの名無しさん
2010/06/23(水) 22:04:21Yes
iostreamをはじめ、std::string、boost::format、spiritはいわずもがな。
便利だから使うけど、C++って>>330のようなコンベンションが黙殺される傾向にあるのは確かで……
まぁそれだけなら問題ないわけだが、呼び出す関数側で交換法則が成り立つと思って処理したら
結果は未定義になってしまうんじゃないか?
Conceptはこういうメソッドを持ってるということは認識できるけど、
「正しく」実装されているかについては知ることはできないし、不可能だと思うよ。
0337デフォルトの名無しさん
2010/06/23(水) 22:11:25で現在時刻を取得した後に、年、月、日、時、分、秒、m秒
をそれぞれ取得するにはどのクラス or 関数を使用するれば良いのでしょうか
0338デフォルトの名無しさん
2010/06/23(水) 22:22:57そう、同じにならないのなら別々の定義にするか、片方だけ定義すればいいのになぜ危惧してるのか疑問に思った。
それが一方の定義だけで自動で両方対応すると思ってるのかと思った。
0339デフォルトの名無しさん
2010/06/23(水) 22:28:04なんか意図が汲み取れないが、交換法則が成り立たないのをよしとしている?
0340デフォルトの名無しさん
2010/06/23(水) 22:48:13+演算子をオーバーロードするときは交換法則が成り立つのが理想だと思うけど、>>327は何を危惧してるのかが掴みきれない。
0341デフォルトの名無しさん
2010/06/23(水) 23:01:38なぜ黙殺される傾向にあると思ったの?
0342デフォルトの名無しさん
2010/06/23(水) 23:01:450343デフォルトの名無しさん
2010/06/23(水) 23:05:260344デフォルトの名無しさん
2010/06/23(水) 23:07:31そんなにやばいの?
0345デフォルトの名無しさん
2010/06/23(水) 23:10:46他にどんな用途に使ってるの?
0346デフォルトの名無しさん
2010/06/23(水) 23:11:240347デフォルトの名無しさん
2010/06/23(水) 23:13:31確かに文字列の連結は交換則成り立たないな
あまり意識していなかったが
0348332
2010/06/23(水) 23:14:11要するに
>>327は、テンプレート作っているやつが
template<class T>
void foo(const T& a, const T& b)
{
a+bでなきゃならない部分まで
b+aと特に注意しないで書いちゃう
}
ってのを心配しているのかな!!
0349デフォルトの名無しさん
2010/06/23(水) 23:16:310350デフォルトの名無しさん
2010/06/24(木) 02:13:250351デフォルトの名無しさん
2010/06/24(木) 12:37:43特に自分がクラスを作る場合
0352デフォルトの名無しさん
2010/06/24(木) 13:00:07混乱する人が演算子のオーバーロードを使わなければいいだけの話。
中には必要としている人もいるのだから俺様的価値観を押しつけるな。
0353デフォルトの名無しさん
2010/06/24(木) 13:13:100354デフォルトの名無しさん
2010/06/24(木) 17:36:12もしかしたら自前で可変長配列作ったほうがいい場合ってあるの?
0355デフォルトの名無しさん
2010/06/24(木) 17:39:35またイテレーターを使用しての繰り返し作業や、ソートなどがとても楽に行えます。
てか自前コンテナなんて作ってんじゃねーよカス。
いちいちオレオレコンテナを読む身になれよクソが!
0356デフォルトの名無しさん
2010/06/24(木) 17:41:55むしろ使わない利点って何?
組み込みとかDSソフト開発とか以外で。
0357デフォルトの名無しさん
2010/06/24(木) 17:42:540358デフォルトの名無しさん
2010/06/24(木) 17:46:01しれないが、場合によってはさらなる混乱を生むかもな
0359デフォルトの名無しさん
2010/06/24(木) 18:04:30ユーザ定義演算子なんざ考えるまでもない。
0360デフォルトの名無しさん
2010/06/24(木) 18:05:26なんか気を付けること有る?
こうやるとコンパイラが最適化しちゃう、とか。
0361デフォルトの名無しさん
2010/06/24(木) 18:18:470362デフォルトの名無しさん
2010/06/24(木) 19:12:54何のためにそんなことするのかわからないけど
普通は最適化もSTLを利用するアプリケーションコードもコミコミでの実測だし
何も気にせずプロファイラかければいいよ
0363デフォルトの名無しさん
2010/06/24(木) 19:40:46イテレータ使ってるとそうそう起きないのかな?
0364デフォルトの名無しさん
2010/06/24(木) 19:55:06そうそう起きることが期待されてる。
0365デフォルトの名無しさん
2010/06/24(木) 19:56:14最適化せずに実測する意味がないと思われ
0366デフォルトの名無しさん
2010/06/24(木) 20:14:58期待はしてるけど、どこまで最適化されるのかな、と
テンプレートで実装丸見えだから最適化されるのが普通なのかね
0367デフォルトの名無しさん
2010/06/25(金) 01:24:320368デフォルトの名無しさん
2010/06/25(金) 08:21:570369デフォルトの名無しさん
2010/06/25(金) 09:20:150370デフォルトの名無しさん
2010/06/25(金) 21:16:53本来の意味と違う演算子の使い方をするので、こんな条件が必要でしょう。
なんとなく意味が伝わる。
あまり使われない演算子。
副作用や変な罠が無い。
0371デフォルトの名無しさん
2010/06/25(金) 22:10:44^演算子をべき乗演算子にしちゃうぞ
凝りすぎの演算子オーバーロード
<- 逆アロー演算子を作りました。
0372デフォルトの名無しさん
2010/06/25(金) 22:20:53読めるのでよりOOPらしいと思うんだよね。
でもC++はあくまでもCの後継パワーアップ言語なので、アロー演算子->
を使わないと行けず、最初は「メッセージの向きが逆じゃないか」と
頭が混乱していましたが、もうOOPとかそういう考え方をするのを
やめて「こういう物なんだ」と諦めてから楽になりました。
0373デフォルトの名無しさん
2010/06/25(金) 22:31:54なんてどうやって作るの?
operator < (l, r)
に単項演算子operator -を使うのか!?
0374デフォルトの名無しさん
2010/06/25(金) 22:34:02それしかねーだろ
0375デフォルトの名無しさん
2010/06/25(金) 22:35:030376デフォルトの名無しさん
2010/06/25(金) 22:38:470377デフォルトの名無しさん
2010/06/26(土) 02:25:300378デフォルトの名無しさん
2010/06/26(土) 10:30:14C++はSmalltalkを参考にしてないから
メッセージとかそういう概念はないよ
0379デフォルトの名無しさん
2010/06/26(土) 12:27:21あの文法は酷い
0380デフォルトの名無しさん
2010/06/26(土) 12:43:19C++/CLIぐらい酷いのか?
0381デフォルトの名無しさん
2010/06/26(土) 13:04:442つの言語が混在しているような違和感がある
0382デフォルトの名無しさん
2010/06/26(土) 13:36:170383デフォルトの名無しさん
2010/06/26(土) 13:37:270384デフォルトの名無しさん
2010/06/26(土) 14:34:14>>381っぽくいうと、
マネージド部をあえてを同じ言語っぽくしてぜんぜん混在できないところ
0385デフォルトの名無しさん
2010/06/26(土) 14:48:57よく分からないな。
どういう形に実現していれば良いことになるの?
JNIみたいにC/C++のI/F用意しました、なら良いってこと?
0386デフォルトの名無しさん
2010/06/26(土) 14:51:280387デフォルトの名無しさん
2010/06/26(土) 23:10:110388デフォルトの名無しさん
2010/06/27(日) 09:01:430389デフォルトの名無しさん
2010/06/27(日) 09:10:01最初はとまどったけど参考書も結構でてるし、boostっていう無料で質量最高のサンプルもあるし勉強はしやすい
0390デフォルトの名無しさん
2010/06/27(日) 09:25:000391388
2010/06/27(日) 09:25:470392デフォルトの名無しさん
2010/06/27(日) 09:42:420393デフォルトの名無しさん
2010/06/27(日) 10:37:540394デフォルトの名無しさん
2010/06/27(日) 10:58:21その理解できないというテンプレートって何?
spiritだったら許す
0395デフォルトの名無しさん
2010/06/27(日) 13:05:41自分ではあまり定義したりしないかな
0396デフォルトの名無しさん
2010/06/27(日) 13:22:010397デフォルトの名無しさん
2010/06/27(日) 13:24:190398デフォルトの名無しさん
2010/06/27(日) 13:43:15STLの使用も最初は禁止されていて、俺が熱弁を振るってようやく
使用許可が出た位だ
0399デフォルトの名無しさん
2010/06/27(日) 13:44:33これがないとスマポをコンテナに入れられない
カタワになっちまう
0400デフォルトの名無しさん
2010/06/27(日) 13:54:49返信遅れて本当に大変申し訳ない。
わざわざ誘導ありがとうございました。
0401デフォルトの名無しさん
2010/06/27(日) 14:28:320402デフォルトの名無しさん
2010/06/27(日) 17:07:30なんで禁止されそうになったの?
0403デフォルトの名無しさん
2010/06/27(日) 17:29:100404デフォルトの名無しさん
2010/06/27(日) 17:54:580405デフォルトの名無しさん
2010/06/27(日) 17:56:540406デフォルトの名無しさん
2010/06/27(日) 18:12:110407デフォルトの名無しさん
2010/06/27(日) 18:16:180408デフォルトの名無しさん
2010/06/27(日) 18:37:450409デフォルトの名無しさん
2010/06/27(日) 18:44:210410デフォルトの名無しさん
2010/06/27(日) 18:45:170411デフォルトの名無しさん
2010/06/27(日) 19:35:010412デフォルトの名無しさん
2010/06/27(日) 19:41:490413デフォルトの名無しさん
2010/06/27(日) 19:55:370414デフォルトの名無しさん
2010/06/27(日) 19:57:490415414
2010/06/27(日) 20:02:32C++で読み書きする方法でもいいです。
0416デフォルトの名無しさん
2010/06/27(日) 20:04:45そのつど独自形式で読み書きします。
0417デフォルトの名無しさん
2010/06/27(日) 20:06:490418デフォルトの名無しさん
2010/06/27(日) 21:04:19phpは型とデータを一緒にシリアル化して、ロードに動的に変数確保出来るけど。
C++はそれができないからあきらめた。
phpはどんな型でもserialize関数に渡せるけど、C++でその復元が無理。
0419デフォルトの名無しさん
2010/06/27(日) 21:04:350420デフォルトの名無しさん
2010/06/27(日) 21:06:020421デフォルトの名無しさん
2010/06/27(日) 21:11:51その1が添え字のずれを生じさせて面倒なんだよな。
0422デフォルトの名無しさん
2010/06/27(日) 21:13:270423デフォルトの名無しさん
2010/06/27(日) 21:16:58> 1-origin で 1, 2, 3, 4, 5 だと,5 の剰余をとると 1, 2, 3, 4, "0" になってしまいます.
> この不整合には困りました…
こんな問題もあるってさ
0424デフォルトの名無しさん
2010/06/27(日) 21:17:53for( int i = 0 ; 1 != size ; ++i ) A[i] ;
!=で終端を判断できるというのは、イテレーターを汎用化させるために一役買っているんじゃないか。
0425デフォルトの名無しさん
2010/06/27(日) 21:22:300426デフォルトの名無しさん
2010/06/27(日) 21:31:290427デフォルトの名無しさん
2010/06/27(日) 21:35:380428デフォルトの名無しさん
2010/06/27(日) 21:39:410429デフォルトの名無しさん
2010/06/27(日) 22:42:24boost::Arrayの出番ではないの?
0430デフォルトの名無しさん
2010/06/27(日) 22:53:330431デフォルトの名無しさん
2010/06/27(日) 22:59:55そうしないとfor文を書き換えなければならず、余計な思考が必要になる
0432デフォルトの名無しさん
2010/06/28(月) 19:33:55int a[] = { 1, 2, 3, 4, 5 };
typedef std::reverse_iterator<int*> rit;
rit begin(a + _countof(a));
rit end(a);
for (rit it = begin; it != end; ++it) {
std::cout << *it << std::endl;
}
0433デフォルトの名無しさん
2010/06/28(月) 19:46:26それ以前に、有効なイテレータが作れないんだよね
ずらさないと、対応するrendに対応するイテレータが無くなってしまう
0434デフォルトの名無しさん
2010/06/28(月) 20:19:34負も持てるし符号無しlongよりながいし整数程度の精度なら誤差もない
0435デフォルトの名無しさん
2010/06/28(月) 20:22:470436デフォルトの名無しさん
2010/06/28(月) 20:40:27気持ち悪いけど解決法と言えないことはないかもね
0437デフォルトの名無しさん
2010/06/28(月) 20:44:55糞BCCめ
0438デフォルトの名無しさん
2010/06/28(月) 20:54:09これは目から鱗でした
0439デフォルトの名無しさん
2010/06/28(月) 21:49:39C++は既に時代後れ気味。
PHPを主流にした方が良い。
C++をアセンブラを弄くるみたいな立場に持っていく。
0440デフォルトの名無しさん
2010/06/28(月) 21:53:10こんなところで乞食するよりよっぽど早く完成するぞ
0441デフォルトの名無しさん
2010/06/28(月) 21:53:320442デフォルトの名無しさん
2010/06/28(月) 21:53:57PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。
プログラミング言語としてみると、PHPはシンプルです。
簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。
HipHopにより私たちはページによっては、Webサーバー上で約50パーセントのCPU使用量を削減できました。
CPUの使用量の少なさは、サーバー台数の削減につながり、それはより少ないオーバーヘッドを意味します。
私たちはHipHopがウェブに大きな利益をもたらすと感じ、
オープンソースとしてリリースしPHPによる大規模WEBサイトのスケーリングに新たな方向性が提示されると期待します。
HipHopはあなたのPHPのソースコードをC++に最適化された形に機械的に変換します。
HipHopコード変換機は、PHPランタイムの再実装であり、また多くのパフォーマンス向上の為のPHPエクステンションを書き直したものです。
http://blog.candycane.jp/archives/275
0443デフォルトの名無しさん
2010/06/28(月) 21:57:03じゃぁ自分でビルドすればいいじゃない、
凄く問題が簡単になったね!
0444デフォルトの名無しさん
2010/06/28(月) 21:58:30ビルドとインストール
HipHopはCentOSとFedora向けに開発されており、
他のオペレーティングシステム上でのビルドは現在のところ機能しません。
他のオペレーティングシステム向けのサポートは準備ができ次第追加されます。
http://blog.candycane.jp/archives/295
0445デフォルトの名無しさん
2010/06/28(月) 22:12:560446デフォルトの名無しさん
2010/06/28(月) 22:13:05もしスクリプトがC++と同じ使い勝手だったら
誰もスクリプトなんか使わないよね
0447デフォルトの名無しさん
2010/06/28(月) 22:22:18だれもC++使わないよね。
0448デフォルトの名無しさん
2010/06/28(月) 22:36:100449デフォルトの名無しさん
2010/06/28(月) 22:53:35他の言語に比べてC++ってエラー修正がしやすいから結局スクリプトで書くより早く出来上がることが多い気がする
0450デフォルトの名無しさん
2010/06/29(火) 00:22:59プログラマ全員から「どこがやねん!」というツッコミあるで〜
0451デフォルトの名無しさん
2010/06/29(火) 00:32:52目を合わせちゃダメだって
0452デフォルトの名無しさん
2010/06/29(火) 03:14:11それなら十分ありえる
0453デフォルトの名無しさん
2010/06/29(火) 09:03:08規模が大きくなると特に
0454デフォルトの名無しさん
2010/06/29(火) 09:43:56だからバッファオーバランがそこら中で起こってパッチが出まくっている。
規模が大きくなると特にな。
0455デフォルトの名無しさん
2010/06/29(火) 09:46:170456デフォルトの名無しさん
2010/06/29(火) 10:00:02そのためにPHPをコンパイルできるようにする。文法エラーなどは動かす前に判明出来る。
0457デフォルトの名無しさん
2010/06/29(火) 10:00:33一所懸命に一つ一つ違いを挙げていったところで、根本的な事実は変わらないよ。
0458デフォルトの名無しさん
2010/06/29(火) 10:04:18動作しないコードが混じっていても、
スクリプトはそこが実行されなければ正常動作する。
C++は文法エラーや範囲チェックなどあって実行しなくてもエラーになる。
0459デフォルトの名無しさん
2010/06/29(火) 10:07:52だから、言語によって個々の仕様はあるんだから利点欠点はいくらでもあるだろう。
その事実を踏まえた上で、
「適当に書こうと思えば、どんな言語でも適当に書ける。」
と言っているんだが、日本語が通じないのか?
0460デフォルトの名無しさん
2010/06/29(火) 10:18:32その点では当然C++のが賢い
0461デフォルトの名無しさん
2010/06/29(火) 10:23:520462デフォルトの名無しさん
2010/06/29(火) 10:29:010463デフォルトの名無しさん
2010/06/29(火) 10:33:360464デフォルトの名無しさん
2010/06/29(火) 10:34:16両方の有用な部分と駄目な部分を考えていくならともかく、
自分の主張する部分のみをひたすら押し通そうとする姿勢で望む意味が分からない。
0465デフォルトの名無しさん
2010/06/29(火) 10:39:47駄目な奴に書かせたC++のCGIとPHPのプログラム、
どっちが怖いかと言ったらC++の方が怖い。
よい子は目的に応じて使い分けろ。
0466デフォルトの名無しさん
2010/06/29(火) 10:43:23スクリプトでもコンパイルも可能で、GUIや3Dも出来るようにする。
ホットスーププロセッサーでさえ、GUIや3Dが出来るんだ。
PHPに出来ないわけがない。
開発者がいるかどうだ。
0467デフォルトの名無しさん
2010/06/29(火) 10:47:58なんでお客様目線なんだよ。
0468デフォルトの名無しさん
2010/06/29(火) 11:05:55それはC++がではなくて、コンパイラが、じゃないのか?
0469デフォルトの名無しさん
2010/06/29(火) 11:09:04C++のコンパイラなんだから、C++がということに他ならん
0470デフォルトの名無しさん
2010/06/29(火) 11:14:570471デフォルトの名無しさん
2010/06/29(火) 11:25:32とエラー出るんですがVC++2008では通ります。
どっちが正しいですか?
template <typename T> void f(T);
int main()
{
struct X { int x; } x = { 0 };
f(x); //<<< エラー
}
0472デフォルトの名無しさん
2010/06/29(火) 11:28:300473デフォルトの名無しさん
2010/06/29(火) 11:44:21ほとんどの警告やエラーは標準C++の仕様で決まってるやつだろ?
とするとC++が賢い、で合ってる
0474デフォルトの名無しさん
2010/06/29(火) 11:50:25そんなコンパイラ使えるか
0475デフォルトの名無しさん
2010/06/29(火) 11:52:000476デフォルトの名無しさん
2010/06/29(火) 11:55:46コンパイラが悪いだけで仕様は別問題になって、
以下どうでもいい話がぐるぐる回るのか?
0477デフォルトの名無しさん
2010/06/29(火) 12:10:44ローカルな構造体やクラスをテンプレート引数に渡すのは、現標準(C++03)までは対応してない、
つまりコンパイラ依存。
次期標準では対応するらしい
0478デフォルトの名無しさん
2010/06/29(火) 12:47:49そんな事を言い出すとC++0xはなおさらしんどくなるんだが?
0479デフォルトの名無しさん
2010/06/29(火) 13:55:54template<class FwdIt>
void Sort(FwdIt Fst,FwdIt Lst){//O(N*((1+N)/2))??
for(FwdIt i=Fst; i != Lst; i++){
for(FwdIt j=i; j != Lst;j++){
if((*i)>(*j)){
std::iter_swap(i,j);
}
}
}
return;
}
0480デフォルトの名無しさん
2010/06/29(火) 14:04:360481デフォルトの名無しさん
2010/06/29(火) 14:04:470482デフォルトの名無しさん
2010/06/29(火) 14:22:51バブルソードでFA
0483デフォルトの名無しさん
2010/06/29(火) 14:28:28どれだろう。
ウィキペディア検索してみたら、バブルソートが同じっぽい実装になってた。
というわけでバブルソートということにしておきます。
回答感謝!
0484デフォルトの名無しさん
2010/06/29(火) 16:02:440485デフォルトの名無しさん
2010/06/29(火) 19:20:17なんか弱そうな剣だな
0486デフォルトの名無しさん
2010/06/29(火) 22:34:43スクリプトを実行する互換DLLやLIBなど配布されてますか。
0487デフォルトの名無しさん
2010/06/29(火) 22:41:43Jscript.DLLを起動しているんですか。
0488デフォルトの名無しさん
2010/06/29(火) 22:51:38やった事はないがその手の記事はCodeZineあたりで見た事があったと思う
たしかCOMベースだったような
それとスレ違いだからWin系のスレに移動しろ
0489デフォルトの名無しさん
2010/06/29(火) 23:09:03http://ja.wikipedia.org/wiki/ECMAScript
0490デフォルトの名無しさん
2010/06/30(水) 00:31:380491デフォルトの名無しさん
2010/06/30(水) 00:53:23includeするincludeファイル
0492デフォルトの名無しさん
2010/06/30(水) 06:38:460493デフォルトの名無しさん
2010/06/30(水) 12:50:010494デフォルトの名無しさん
2010/06/30(水) 13:52:000495490
2010/06/30(水) 22:23:23こんなパラメータです。
g++ -E -P -nostdinc -nostdinc++ a.cpp > a.txt
0496490
2010/06/30(水) 22:25:33一枚化はここみて設定しました。
0497デフォルトの名無しさん
2010/07/01(木) 19:38:130498デフォルトの名無しさん
2010/07/01(木) 20:04:29親は子を、子は親を知りたがるし。
0499デフォルトの名無しさん
2010/07/01(木) 20:29:320500デフォルトの名無しさん
2010/07/01(木) 20:31:220501490
2010/07/01(木) 21:59:040502デフォルトの名無しさん
2010/07/01(木) 22:07:20使えなくなるんですが。
有効な#defineだけを抽出するコマンドもあるのですが
それを使うと別のコードに影響でます。
0503デフォルトの名無しさん
2010/07/02(金) 03:47:090504デフォルトの名無しさん
2010/07/02(金) 04:58:09スタティックリンクにすると次のエラーが出ます。
このなおし方分かりますか。
error.obj : error LNK2001: 外部シンボル "__imp__***" は未解決です。
0505デフォルトの名無しさん
2010/07/02(金) 05:21:570506デフォルトの名無しさん
2010/07/02(金) 05:25:09予想ではインポートライブラリには、__imp__関数名になっていて
スタティックライブラリは関数名だと思うんですが。
シンボルの強制に__imp__いれても直せないんです。
0507デフォルトの名無しさん
2010/07/02(金) 06:14:01使用コンパイラとライブラリも明記した上でな
0508デフォルトの名無しさん
2010/07/02(金) 06:53:040509デフォルトの名無しさん
2010/07/02(金) 06:57:010510504
2010/07/02(金) 07:28:06スタティックライブラリの組み込みは、微妙な型の違いでも動かないらしいので。
他のコンパイラのビルド済みライブラリでは駄目かと思います。(の場合もあるかと思います)
0511デフォルトの名無しさん
2010/07/02(金) 07:42:140512デフォルトの名無しさん
2010/07/02(金) 08:03:01_,. -‐:'´: : : : : | , :'´::.::.::.::.::.::.::.::.::.::.::.::.丶
,.イ ,.-:'´: : : : : : : : : : : ! /::.::.::.;.ィ::; ヘ::.::.::.::.::.::.::.::.::.:\
/: ∨: : : : : : : : : : : : : : :l'/l:/::./ ,':/ i::.:ト、::.l、::.:!::.::.::.::.',
,. -:' : : : : : : : : : : : : : : : : : : : -┴-'.._l/ l:| i::| i::l::.::.::.::.::i
ー‐ァ: : : : : : : : : : : : : : : : : : : : : : : : : : :`ーァ l| l| l:|::.::.::.::.::|
/: : : : : : : : : : : : : : : : : : : : : : : : : : : : :/ ー‐‐---、!ヘ::.::.::.::|
,': : : : : : : : : : : : : : : : : : : : : : : : : : : : :/ ┬--、 }::.:/::.!
! : : : : : : : : : : : : : : : : : : : : : : : : : : ;.イj {辷リ ′/::/!::/ここは貴方の日記帳じゃないわ。
ノ: : : : : : : : : : : : : : : : : : :.:.:.:.:.. : :、/ ; /〃ノ:/
´. .:.:.:.:.:.:.:.: : : .:.: : : .:.:.:.. : : :.:.:.:.:.:.:__:.:.ヽ r―-, /-:'´::;′ チラシの裏にでも書いてなさい。
`ー---;.:.:.:..:.:.:.:.:..:.:.:.:.:.:.:.:...:.:.:.:.:.:.:.V ̄`ヽ、 `ー‐' ィ;、:::∧:{
/:.:.:.:._:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.|'´ヽ rく` ト、. -‐'´ | `:く ` ね!
厶-‐'´ |:.:.:.:.:.:.:.:.:.:.:.:.:ト、:.:.:.| _,.-‐! \ __,,. -‐''´ }‐:、
_l;.ィ´ヽ:./ヽ:|'´ ,>‐'´: : く ∨ > \
_,r{`7  ̄{ ̄} ̄¨`‐く__ヽ_;,: -‐; :\ _,.-:'´: : : : : :>、
,.イ | 〉´ ̄ ̄ ̄:  ̄`ー‘v'´>‐_く : : : \___,,. -‐:'´: : :ト-、_;,.-'´ ヽ
r'l ! ,し′: : : : : : : : :}_ノ/ __,,.ヽ: : : : : : : : : : : : : : V l
,Jー'´: : : : : : : : : : :`辷'_,,、 '; : : ∧: : : : : :_; -'´ |
l´: : : : : : : : : : : : }´ l l`ー':.:.:`ー:.'"´:〈 v'
0513デフォルトの名無しさん
2010/07/02(金) 13:54:490514デフォルトの名無しさん
2010/07/04(日) 17:42:58・分母分子の多項式を因数分解する方法
・複素数を次々に代入して分母分子の値がそれぞれ0になる点を探す方法
これ以外に良い方法があれば教えてください。
0515デフォルトの名無しさん
2010/07/04(日) 18:57:380516デフォルトの名無しさん
2010/07/05(月) 00:27:15領域総当たりよりは多項式を解く方法を使いたいので、
複数の係数から解く方法があれば教えていただきたいのです。
0517デフォルトの名無しさん
2010/07/05(月) 00:36:230518デフォルトの名無しさん
2010/07/05(月) 01:12:080519デフォルトの名無しさん
2010/07/05(月) 10:48:43俺は知らないけどありそうなもんだけどね
0520デフォルトの名無しさん
2010/07/05(月) 12:48:24それを書くには最大行数が少ない
0521デフォルトの名無しさん
2010/07/05(月) 13:42:22他にもあるかもしれんがMATLABを持ってないのでわからん
0522デフォルトの名無しさん
2010/07/05(月) 21:03:390523デフォルトの名無しさん
2010/07/05(月) 21:15:47自腹で買ったのか?
0524デフォルトの名無しさん
2010/07/05(月) 21:57:100525デフォルトの名無しさん
2010/07/05(月) 23:35:27private:
int num;
public:
Number(int n){num = n;} //変換コンストラクタ
operator int(){return num;} // 変換関数
この変換コンストラクタってただint型の値を渡してNumberクラスの
データメンバnumに値を代入してるだけに見えていまいち理解出来ていません。
これはどういう解釈?で見たら良いのでしょうか?
説明がよく分からないと思いますがエスパーの方お願いします
0526デフォルトの名無しさん
2010/07/05(月) 23:40:15見えてるとおりだけど。
まずNumberというクラスの役目は何か調べてみ。
0527デフォルトの名無しさん
2010/07/05(月) 23:40:43それともどういう場面で呼ばれるのかが分からない?
0528デフォルトの名無しさん
2010/07/05(月) 23:44:35見えてるとおりでしたか。
ただやっぱりどういう状況で使うものなのかよく分からないので
助言どおりちょっともう1度参考書見直してみます。
ありがとうございました!
0529デフォルトの名無しさん
2010/07/05(月) 23:48:080530デフォルトの名無しさん
2010/07/05(月) 23:50:36って出来る奴?
0531デフォルトの名無しさん
2010/07/05(月) 23:51:35Yes
Number n(100);と等価ではないので注意
0532デフォルトの名無しさん
2010/07/05(月) 23:54:050533デフォルトの名無しさん
2010/07/05(月) 23:54:52方程式を解く方法は二分法とかニュートンラフソン法とか色々あるけど、解析的に一発で答えが求まる方法はないはず。
参考
www.mech.kumamoto-u.ac.jp/Info/lab/ape/mori/dark/others-j.files/others.files/non.ppt
ただcomplex.hのままではコンパイラに怒られる
0534デフォルトの名無しさん
2010/07/06(火) 00:11:32なので結局今まで使ってきた引数1つのコンストラクタとの違いが分からなくて
>>530と>>531の違いがよく分からない。
int型をfloat型にキャスト変換するとかなら利用用途も分かりやすいんだけど。
0535デフォルトの名無しさん
2010/07/06(火) 00:21:05ToHexStringを作ってみたいとか、NULL許容型のように動作させたいとか。
0536デフォルトの名無しさん
2010/07/06(火) 00:36:40自分にはまだ早い気がしてきたw
取りあえず勉強します。ありがとう!
0537デフォルトの名無しさん
2010/07/06(火) 00:40:26横からすみません
Number n = 100;
と
Number n(100);
はどちらも変換コンストラクタによるNumberオブジェクトの初期化ではないのでしょうか?
n生成後に
n = 10;
だと一時オブジェクトが生成されて変換が生じてnに代入される
と思ってましたが違うのですか?
0538デフォルトの名無しさん
2010/07/06(火) 00:47:090539デフォルトの名無しさん
2010/07/06(火) 00:51:26前者はexplicitがついているとエラーになるのが違う
0540デフォルトの名無しさん
2010/07/06(火) 00:51:270541デフォルトの名無しさん
2010/07/06(火) 00:58:120542デフォルトの名無しさん
2010/07/06(火) 00:58:550543デフォルトの名無しさん
2010/07/06(火) 01:00:07>>525のコードではexplicitがついてないので等価なのでは?
>>540
私も同じ意見です
0544デフォルトの名無しさん
2010/07/06(火) 01:35:320545デフォルトの名無しさん
2010/07/06(火) 02:36:39>>544を見れば、Number n2 = 222に対して、コンストラクタとコピーコンストラクタが呼ばれているのが分かると思う。
0546デフォルトの名無しさん
2010/07/06(火) 02:45:20Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland
Numberオブジェクト生成
コンストラクタ num=11
コンストラクタ num=222
一時オブジェクト生成後に代入
コンストラクタ num=3333
代入演算子 num=3333
変換演算子による出力
変換演算子 num=3333
3333
0547デフォルトの名無しさん
2010/07/06(火) 02:55:05>>544のコンパイラは?
0548デフォルトの名無しさん
2010/07/06(火) 03:23:050549デフォルトの名無しさん
2010/07/06(火) 03:35:340550デフォルトの名無しさん
2010/07/06(火) 04:58:01VC4は #include <iostream.h>、//using namespace std; にしないとコンパイル通らないけど
0551デフォルトの名無しさん
2010/07/06(火) 07:32:37http://codepad.org/JCHEPAr9
0552デフォルトの名無しさん
2010/07/06(火) 07:54:050553デフォルトの名無しさん
2010/07/06(火) 10:28:17全く同じ使い方に見えるんだが
0554デフォルトの名無しさん
2010/07/06(火) 10:33:070555デフォルトの名無しさん
2010/07/06(火) 11:15:46stringはchar配列の操作を楽にするためのクラス
配列の再確保とか自動でやってくれる(はず)
ところでstd::string使ったこと無いんだけど、
strcpyとかに渡す方法あるの?
0556デフォルトの名無しさん
2010/07/06(火) 11:20:36strcpy()…そんな関数は使う必要がねーんだ。
0557デフォルトの名無しさん
2010/07/06(火) 11:34:39>strcpy()…そんな関数は使う必要がねーんだ。
Windowsしか経験無いけど、APIが生きてるうちは
必要だと思う。
0558デフォルトの名無しさん
2010/07/06(火) 11:39:290559デフォルトの名無しさん
2010/07/06(火) 11:41:12Windows の人ならなおさら使えないだろうに。バッファサイズが云々で警告出るだろ。
0560デフォルトの名無しさん
2010/07/06(火) 11:49:38古いコンパイラ使ってるから警告出たことはないなぁ。
最近のコンパイラだと XX_s 系を使えって出るのかな?
例としてstrcpyって書いたけど、実際はstrncpyか
memcpyを使ってる。
もちろん必要の無いときは使ってないけどね。
0561デフォルトの名無しさん
2010/07/06(火) 11:50:18コピー元だろうと先だろうとそんなもんは要らぬ
0562デフォルトの名無しさん
2010/07/06(火) 11:57:06なぜなら、オレや、オレたちの仲間は、
そんな関数を頭の中に思い浮かべる前には!
std::string::operator=(char const*) を使って、もうすでに書き終わってるからだッ!
だから使った事がねェーッ。
0563デフォルトの名無しさん
2010/07/06(火) 12:01:45string内のバッファに自分で書き込みたいとか無理な注文よ
C++03まではそもそもvectorと違って連続してる保証ないから
0564デフォルトの名無しさん
2010/07/06(火) 12:04:31std:stringのオーバーロードだけで完結するのは不可能。
0565デフォルトの名無しさん
2010/07/06(火) 12:08:54そういうこともあるよね。やっぱり strcpy() は要らないんだけど。
0566デフォルトの名無しさん
2010/07/06(火) 12:10:08string のバッファの連続性が保証されるのは次の規格改定 (C++0x) から。
vector のバッファの連続性が保証されたのが C++ 2003 から。
0567デフォルトの名無しさん
2010/07/06(火) 12:18:500568デフォルトの名無しさん
2010/07/06(火) 21:14:46*t = NULL;
書いていて思ったけど、危険なコードだ。
0569デフォルトの名無しさん
2010/07/06(火) 21:30:030570デフォルトの名無しさん
2010/07/06(火) 22:44:05この場合は NULL と書かないほうがいい。
char *s, *t; ならば \0 とか、あるいは 0 とか。
0571デフォルトの名無しさん
2010/07/06(火) 22:45:470572デフォルトの名無しさん
2010/07/06(火) 22:45:58vcprojから立ち上げた場合は、ファイルが読めてないもののプログラムの実行は出来て、
slnから立ち上げた場合は、プログラムの途中でWindowsによってブレークポイントが発生するんだけど、どういうこと?
どうやら友人宅のPCでも同じ動作になる模様
調べて出てくるものは、大体二重deleteが原因って書いてあるんだけど、そのプログラムでは
deleteキーワードすらないので、関係無いだろうし、slnファイルが壊れているのかも、と新規作成してみても
結局同じ動作になってたんだけど…
0573デフォルトの名無しさん
2010/07/06(火) 22:48:210574デフォルトの名無しさん
2010/07/06(火) 22:50:150575デフォルトの名無しさん
2010/07/06(火) 22:58:170576デフォルトの名無しさん
2010/07/06(火) 23:21:16windowsでC++という前提で、、、
MFCは古いし、C++/CLIは酷いし
みんなはどうしてる?
0577デフォルトの名無しさん
2010/07/06(火) 23:25:320578デフォルトの名無しさん
2010/07/06(火) 23:25:580579デフォルトの名無しさん
2010/07/06(火) 23:26:310580デフォルトの名無しさん
2010/07/06(火) 23:39:50どうしてですか?VC はできますが。
class X {
template<class T> void f(T);
template<> void f(int); // NG
};
template<> void X::f(int); // OK
0581デフォルトの名無しさん
2010/07/07(水) 00:05:11http://www.ooyashima.net/db/prog.htm
wxWidgetsとかUltimate++とか使ってレポートしてくれ
0582デフォルトの名無しさん
2010/07/07(水) 00:22:04Inkscapeで使われてるやつ
0583デフォルトの名無しさん
2010/07/07(水) 00:55:330584デフォルトの名無しさん
2010/07/07(水) 01:01:08って何の役に立つのこの糞アンケート
0585デフォルトの名無しさん
2010/07/07(水) 02:22:27検索してみた。
http://www.google.co.jp/search?q=%22An+explicit+instantiation%22+%22is+placed+in+the+namespace%22
↓
http://groups.google.com/group/comp.std.c++/msg/cd872f92408f9d5e
> Think about it, if we allow explicit instantiation/specialization in a
> function/class, then how do we explain the visibility of such
> specialization/instantiation? I think this will bring more complexity.
アクセス指定を別々にできちゃったりしてめんどくさいからじゃね?
という説が見つかった。
0586576
2010/07/07(水) 08:44:03それにしても色々あるな
Qt
そういう手があるかぁ。
MSの選択肢しか見てなかった…
WTL
今まで詳しく見てなかったが、これWin32API+GUIにぴったしなんだね
ATLやWPFあたりは調べたが、WTLは見落とし
wxWidgets
こんなのもあるのか、しかしそこまで手が回るかワカラン
Win32API+GUIを使った初学者向けサンプルプログラムを書いているが、
MFCやC++/CLIは敷居が高いので困っていた
0587デフォルトの名無しさん
2010/07/07(水) 10:50:550588デフォルトの名無しさん
2010/07/09(金) 16:53:03のような長さを明記しない配列宣言を
const boost::array<int,?> b = { { 0, 1, 2, 3, 4, 5 } };
みたいにboost::arrayでやる方法はありますか?
0589デフォルトの名無しさん
2010/07/09(金) 17:22:000590名無しさん@そうだ選挙に行こう
2010/07/10(土) 16:51:37ムリダナ
配列を作って、それとは別に
その配列を操作するためのラッパクラステンプレートでも作るといい
0591名無しさん@そうだ選挙に行こう
2010/07/10(土) 22:22:12template <typename T, std::size_t N>
boost::array<T, N> & array_cast(T(&a)[N])
{
return reinterpret_cast<boost::array<T, N>&>(a);
}
template <typename T, std::size_t N>
const boost::array<T, N> & array_cast(const T(&a)[N])
{
return reinterpret_cast<const boost::array<T, N>&>(a);
}
int main()
{
const int a[] = {0, 1, 2, 3, 4, 5};
const boost::array<int, sizeof(a)/sizeof(a[0])> b = array_cast(a);
for (std::size_t i = 0; i < b.size(); ++i)
std::cout << b[i] << std::endl;
}
0592名無しさん@そうだ選挙に行こう
2010/07/10(土) 22:43:25何なんだよこの謎の書式。どの参考書買えばこれ載ってるんだよ。
0593名無しさん@そうだ選挙に行こう
2010/07/10(土) 22:52:00& を取っ払って解釈→& をつけて参照、か。
0594名無しさん@そうだ選挙に行こう
2010/07/10(土) 23:08:000595名無しさん@そうだ選挙に行こう
2010/07/10(土) 23:32:310596名無しさん@そうだ選挙に行こう
2010/07/11(日) 00:37:230597名無しさん@そうだ選挙に行こう
2010/07/11(日) 10:40:00今さらですが、そういうことです。
ここで聞くにはそういう聞き方をするべきでしたね。
すみません。
どなたかよろしくおねがいします。
0598名無しさん@そうだ選挙に行こう
2010/07/11(日) 11:40:46分母のn次多項式=0を解きたいのなら、ニュートン法を使う。
0599名無しさん@そうだ選挙に行こう
2010/07/11(日) 16:02:264次まではあるが、5次かそれより大きいものについては、一般解というものは存在しなかったはず。
0600名無しさん@そうだ選挙に行こう
2010/07/11(日) 17:09:59公式はないけど、どこかに解はあるわけで、
それを数値的に求めるアルゴリズムはないか・・・って話じゃなくて?
というかいくつか上に答え出てるけどな
>>521とか>>533とか
0601名無しさん@そうだ選挙に行こう
2010/07/11(日) 17:31:530602名無しさん@そうだ選挙に行こう
2010/07/11(日) 17:34:290603名無しさん@そうだ選挙に行こう
2010/07/11(日) 17:49:350604名無しさん@そうだ選挙に行こう
2010/07/11(日) 18:07:220605名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:24:02Win32xx C# HSPなど。
0606名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:53:28GUI 側から処理用プロセスを起動するとして、
その起動中の処理用プロセスから情報(=進行度)を取得って何使うの?
0607名無しさん@そうだ選挙に行こう
2010/07/11(日) 20:00:20圧縮中に進行状況取得出来る。
0608名無しさん@そうだ選挙に行こう
2010/07/11(日) 20:35:120609名無しさん@そうだ選挙に行こう
2010/07/11(日) 21:50:33{
public:
template< int N > explicit ArrayAccessor( T(&a)[ N ] ) : array_( a ), size_( N ){}
T& operator []( int index ){ return this->array_[ index ]; }
private:
T* const array_;
const int size_;
};
int temp[] = { 8, 5, 7, 3, 6 };
ArrayAccessor<int> aa( temp );
こんな感じで配列のラッパクラス作ったんですが
これを二次元配列に拡張するのはどうすればいいですか?
0610名無しさん@そうだ選挙に行こう
2010/07/11(日) 22:01:41そこまで出来れば十分だ。こうすればいい。
ArrayAccessor<ArrayAccesor<int>>> a;
a[1][2]=3;
0611名無しさん@そうだ選挙に行こう
2010/07/11(日) 22:15:54{
{ 0, 1, 2 },
{ 0, 1, 2 },
{ 0, 1, 2 },
{ 0, 1, 2 },
};
ArrayAccessor<ArrayAccesor<int>>> a(temp);
初期化がうまくいきません。
0612名無しさん@そうだ選挙に行こう
2010/07/11(日) 23:28:50class array1d {
public:
template<int N>
explicit array1d(T (&x)[N]) : p_(x), n_(N) {}
array1d(T * p, int n) : p_(p), n_(n) {}
T& operator [] (int i) { return p_[i]; }
private:
T * p_;
const int n_;
};
template<typename T>
class array2d {
public:
template<int N, int M>
explicit array2d(T (&x)[N][M]) : p_(*x), n_(N), m_(M) {}
array1d<T> operator [] (int i) { return array1d<T>(p_ + m_ * i, m_); }
private:
T * p_;
const int n_, m_;
};
作ってみたものの、気持ち悪いな
テンプレート引数で次元を設定して――とかやるのは面倒そうだし
0613デフォルトの名無しさん
2010/07/12(月) 01:13:40fout.open( "hogehoge.dat" );の直後に「hogehoge.datに出力しました」というのをcout<<"hogehoge.dat"<<endl;としないで直前に扱ったファイル名を出力できる形式にしたいのです。
0614デフォルトの名無しさん
2010/07/12(月) 01:56:22BidirectionalIteratorで走査するSTLコンテナを自作するとき、
cont.back() == *--cont.end() を保証するべきでしょうか?
0615デフォルトの名無しさん
2010/07/12(月) 06:31:16という揚げ足取りはともかく言いたいことは分かる
保証してくれないと困るだろう
0616デフォルトの名無しさん
2010/07/12(月) 13:13:41> テンプレート引数で次元を設定して――とかやるのは面倒そうだし
任意個のテンプレート引数ってC++0xで導入されるんだっけ?
その場合、簡単にできるのかな?
0617614
2010/07/12(月) 20:47:53どうもです。
もっと正確には、cont.begin() != cont.end() のとき --cont.end() が有効な要素を指すイテレータでなければならないか?
ということなのですが、検索した情報を読むかぎり「end() は終端要素+1の位置を指すイテレータを返す」という説明が多かったので、
やはり --cont.end() は有効なイテレータになるべきなんでしょうね。
0618デフォルトの名無しさん
2010/07/12(月) 21:07:15sizeが0のコンテナだったらどうなると思う?
0619デフォルトの名無しさん
2010/07/12(月) 21:35:33*.cppにこれが書いていて、*.hには書いてありませんでした
何がしたいんですか?
0620デフォルトの名無しさん
2010/07/12(月) 21:37:160622614
2010/07/12(月) 23:32:31>cont.begin() != cont.end() のとき --cont.end() が有効な要素を指すイテレータ
cont.begin() == cont.end() の場合は、 *--cont.end() は未定義でしょう。
0623デフォルトの名無しさん
2010/07/13(火) 13:01:11>>618
イテレータクラスの
operator--()
のオーバーロードについて一切言及がない以上、
任意の実装が成されていても問題ないと考えられるため、
> --cont.end() が有効な要素を指すイテレータ
というという期待をしては行けないってのが
C++の考えなんじゃないでしょうか。
0625デフォルトの名無しさん
2010/07/13(火) 14:34:04(実装がイテレータとして生ポインタを返す場合)とあるね。
0626デフォルトの名無しさん
2010/07/13(火) 15:00:24> イテレータクラスの
> operator--()
> のオーバーロードについて一切言及がない以上、
> 任意の実装が成されていても問題ない
なんじゃね?
0627デフォルトの名無しさん
2010/07/13(火) 22:17:28どんなメリットがあるのですか?
0628デフォルトの名無しさん
2010/07/13(火) 22:23:150629デフォルトの名無しさん
2010/07/14(水) 00:03:00>reinterpret_castは、値を保ったまま、型情報だけ変えることのできるキャストである。
>だから、int *からfloat *とか、some_class *からother_class *などといった、お互いに継承関係になく、ユーザー定義の型変換関数もない型のポインターやリファレンスにも変換できる。
>これは、変換するというより、型だけ変えるというべきである。値はそのまま保持される。
0630デフォルトの名無しさん
2010/07/14(水) 07:21:59ポインタをWPARAMやらLPARAMやらに渡したり、逆に受け取った側でポインタに戻したり
0631デフォルトの名無しさん
2010/07/14(水) 14:59:03LinuxとかUNIXだけだったらC++もCのような簡素な物になっていたかも
0632デフォルトの名無しさん
2010/07/14(水) 15:08:290633デフォルトの名無しさん
2010/07/14(水) 15:38:27つか、お前が勝手に環境依存の問題だと勘違いしてる馬鹿な子だと思うが。
実例として相応しくないというなら、お前が挙げれ
0634デフォルトの名無しさん
2010/07/14(水) 16:07:43reinterpret_castにできること。
・ポインター型と整数型の間の型変換
int *型からintとか、int型からint *など。
・異なるポインター型の間の型変換
int *からfloat *とか。
・異なる参照型の間の型変換
int &からfloat &とか。
・異なるメンバーポインターの間の型変換
説明が面倒なのでコード例
struct A { int value ; } ;
struct B { int value ; } ;
int B::* ptr = reinterpret_cast<int B::*>(&A::value) ;
・異なる関数ポインター型の間の型変換
これも説明が面倒なのでコード例
void f(int) {}
void (*ptr)(short) = reinterpret_cast<type>(&f) ;
これ以外の型変換はできない。
0635デフォルトの名無しさん
2010/07/14(水) 18:09:19>・ポインター型と整数型の間の型変換
>int *型からintとか、int型からint *など。
これが正に
>ポインタをWPARAMやらLPARAMやらに渡したり、逆に受け取った側でポインタに戻したり
でしょうに。。
0636デフォルトの名無しさん
2010/07/14(水) 18:27:55intが32bitになっている64bitコンパイラでは通らないけどね。
0637デフォルトの名無しさん
2010/07/14(水) 19:01:15ある特定のプラットフォームのSDKのヘッダーの中で宣言されているtypedef名を持ち出すんだ?
例としてあげるにしても、まず一般的な説明をしろよ。
それから、通るか通らないかは、実装ごとに異なるので、どうしようもない。
あくまで例だ。
0638デフォルトの名無しさん
2010/07/14(水) 20:00:51ん、整数型とポインタが変換できる?
そのメリットは?
ってなるから、実例を挙げてるだけじゃないの?
別にどっちの答えが正しいとかじゃないと思うけど。
そして、どっちの回答が悪いと言うわけでもない。
0639デフォルトの名無しさん
2010/07/14(水) 21:04:34Windowsを特定とか
0640デフォルトの名無しさん
2010/07/14(水) 21:16:32特に環境依存の話がスレ違いになるここじゃ。
0641デフォルトの名無しさん
2010/07/14(水) 21:21:050642デフォルトの名無しさん
2010/07/14(水) 21:31:49何が言いたいのか知らんが暴論だよ。
俺も基本的にはWindowsしか経験が無いが、WPARAMやLPARAMで
パラメータを渡す古臭いAPIを良いとは全く思ってねーし
reinterpret_castの説明には適してないとわかる、というかそれ以前に
VCだと古い形式のキャストでWPARAMにポインタ渡しても警告なんて出ないと記憶してるんだが。
0643デフォルトの名無しさん
2010/07/14(水) 21:34:50決まってることはいくつかあるけどね。たとえば
"ポインタ型から十分大きい整数型に変換し、元のポインタ型に再変換すると、変換前と変換後のポインタ値は一致する(ポインタ値と整数値は一致するとは限らない)"とか
"定数0をポインタ型に変換すると空ポインタになる(変数0はそうなるとは限らない)" とか
"空ポインタを別のポインタ型に変換するとやっぱり空ポインタになる" とか
Windowsな人はVSスレで、Linuxな人はGCCスレで質問するのがいいと思う
あとどこから引用したか知らないけど >>629 はウソ情報じゃね?
参考までに規格書草案
http://www.kuzbass.ru/docs/isocpp/expr.html#expr.reinterpret.cast
0644デフォルトの名無しさん
2010/07/14(水) 21:37:43いや、そんな話じゃないんだけど
俺が言いたいのは、Winしか知らない奴は、他人もWinを知ってて当然で、
いきなりWPARAMとか言っちゃっても通じると思ってたりするって事だ
0646デフォルトの名無しさん
2010/07/14(水) 22:38:37>>630だけの文からそんなことまでわかるなんて凄いエスパーですね、尊敬します
0647デフォルトの名無しさん
2010/07/14(水) 22:48:12>>630だけの文って何のこと?
0648デフォルトの名無しさん
2010/07/14(水) 22:49:13無闇に煽るとこんな流れになるよな
0649デフォルトの名無しさん
2010/07/14(水) 22:55:51と本当は聞きたかったんじゃないかと俺は思う
0650デフォルトの名無しさん
2010/07/14(水) 23:49:350651デフォルトの名無しさん
2010/07/14(水) 23:50:340652デフォルトの名無しさん
2010/07/14(水) 23:57:2080字以下ぐらいにしとけばいいんじゃない?
0653デフォルトの名無しさん
2010/07/15(木) 00:10:59長くても判りやすければいいかと
0654デフォルトの名無しさん
2010/07/15(木) 00:19:25これをわざわざPerformanceという正式なものをクラス名に採用するということです
0655デフォルトの名無しさん
2010/07/15(木) 00:20:580656デフォルトの名無しさん
2010/07/15(木) 01:20:50慣習に擦り寄っているに過ぎない。
必ずグレーな単語にブチ当たって己を苦しめる事になるであろう。
はっはっは
0657デフォルトの名無しさん
2010/07/15(木) 09:54:42#include <iostream>
#include <string>
#include <time.h>
using namespace std;
string fnc1() { return string(1<<16, '\0'); }
void fnc2(string &s) { s=string(1<<16, '\0'); }
void fnc3(string &s) { s.assign( 1<<16, '\0' ); }
int main() {
int c,n, N=100000; string s;
c=clock(); for(n=0; n<N; n++) s=fnc1(); c=clock()-c; cout<<c<<endl;
c=clock(); for(n=0; n<N; n++) fnc2(s); c=clock()-c; cout<<c<<endl;
c=clock(); for(n=0; n<N; n++) fnc3(s); c=clock()-c; cout<<c<<endl;
getchar(); return 0; }
0658デフォルトの名無しさん
2010/07/15(木) 09:55:390659デフォルトの名無しさん
2010/07/15(木) 14:46:15ifs >> buf_1 >> buf_4f;
と
ifs.read ((char*)&buf_1, 1);
ifs.read ((char*)&buf_4f, 4);
で結果が違うのですが、そういうものでうか?
>>を使うと不正な値(例えば0)が読み込まれます。
readを使うと正しい値が読み込めます。
0660デフォルトの名無しさん
2010/07/15(木) 15:28:421番目と2番目の違いはコンパイラによっては最適化で消えるし。
あとわざとかもしれないけどゼロメモリを確保してもOSによっては実際には確保されないし。
>>659
ストリームオペレータはテキストファイルを読み書きするものだし。
0661デフォルトの名無しさん
2010/07/15(木) 15:33:04Embarcadero C++では1≒2で3が1の半分を少し下回った
MinGW(gcc4.5.0)では1≒2≒3で3が少し速かった
VC10ではECCと似た傾向だが約2倍速い
処理系によって差が出るね
当たり前だけど
0662デフォルトの名無しさん
2010/07/15(木) 16:15:180663662
2010/07/15(木) 16:20:51アラインメント関係のような気がしてきた。すまぬー。
0664662
2010/07/15(木) 16:33:17アラインメントが4バイト境界だったのでファイルに落としてもおかしな形式になってたのでした。
いた汚してごめんなさい。
手当たりしだい#pragma packを突っ込んで解決した。
0665デフォルトの名無しさん
2010/07/15(木) 17:15:40Windowsアプリケーションのソースですが
class TextClass : public exception
{
public:
void Release(); // リソースの開放
private:
LPTSTR message;
void SetMessage(LPCTSTR message);
};
void TextClass::SetMessage(LPCTSTR message)
{
// クラス変数にコピー
this->message = (LPTSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (lstrlen(message) + 1) * sizeof(TCHAR));
lstrcpy(this->message, message);
}
外部からSetMessage()を2回呼ばれると
1回目に確保したメモリがリークしませんか?
「すでにメモリ割り当てを行っていたら開放してから再割当て」
という処理を書く必要があると思うのですが
それを調べる方法はあるのでしょうか?
制御用の変数を新たに作って制御する必要がありますでしょうか?
0666デフォルトの名無しさん
2010/07/15(木) 17:31:12コンストラクタの段階でmessageにNULL突っ込んどいて、
SetMessageが呼ばれた段階でNULLなら初回呼び出し、NULLでなければ2回目以降と言う判断はできるかな。
色々便利だから、メモリの長さも保持しとくといいよ。
0667デフォルトの名無しさん
2010/07/15(木) 17:43:01なるほどなるほど。それでできそうですね。
ありがとうございました。
0668665
2010/07/15(木) 18:24:05Visual Studio 2010のデバッガは
NULLで初期化したポインタの値を
強制的に0xccccccccに書き換えるらしい。
なので挿入するIF文は
if (this->message != NULL && this->message != (LPTSTR)0xcccccccc)
が確実っぽいです。
0669665
2010/07/15(木) 18:45:39追記。
>>668のようにデバッガに依存するコードは書きたくない。
そもそもこのコードは明らかに32bit環境専用。
というわけでより汎用性の高いコードを書くためには
uninitOnStackとでも名付けた初期化しないポインタを敢えて作っておいて
その値と比べるのが確実でいいかもしれないです。
0670デフォルトの名無しさん
2010/07/15(木) 19:16:09なんだそりゃ、おせっかいにもほどがあるなぁ。Windowsの罠か!?
0671デフォルトの名無しさん
2010/07/15(木) 19:20:55初期化してない場合は不定値になるんだから0xcccccccでも問題ないと思うけど
0672デフォルトの名無しさん
2010/07/15(木) 20:06:150673デフォルトの名無しさん
2010/07/15(木) 20:18:110674デフォルトの名無しさん
2010/07/15(木) 20:32:51,、‐ " ̄:::゙:丶、
,r::::l3゙::::::::/ハヽ:ヽ::::、:ヽ
{::://:::::::// ヽ\ト、:::::::!
ヾ l:::::::/ 丶 `ヾ ィ、:::|
|;:r::| O` 'O ゙ハ| < ないない
ヽハ :.:. :.: レ
´\ r‐--‐、,ノ
r、 r、/ヾ ̄下ヘ
ヽヾ 三 |:l1、_ヽ/__ .ィヽ
\>ヽ/ |` } n_n| |
ヘ lノ `'ソ l゚ω゚| |
/´ /  ̄|. |
\. ィ ___ | |
| ノ l | |
| | i:| |
0675665
2010/07/15(木) 20:33:45オーバーロードしたコンストラクタから、デフォルトコンストラクタを呼び出そうとして
TestClass();
と書いたのですが、これは別オブジェクトを生成してることになり、そこで混乱が生じました。
0676デフォルトの名無しさん
2010/07/15(木) 20:34:000677デフォルトの名無しさん
2010/07/15(木) 20:42:170678デフォルトの名無しさん
2010/07/15(木) 21:01:330679デフォルトの名無しさん
2010/07/15(木) 21:52:37でよく使う。
0680デフォルトの名無しさん
2010/07/15(木) 21:55:120681デフォルトの名無しさん
2010/07/15(木) 22:57:040682デフォルトの名無しさん
2010/07/15(木) 23:36:290683デフォルトの名無しさん
2010/07/16(金) 00:40:340684デフォルトの名無しさん
2010/07/16(金) 03:20:240685デフォルトの名無しさん
2010/07/16(金) 09:06:570686デフォルトの名無しさん
2010/07/16(金) 20:04:550687デフォルトの名無しさん
2010/07/16(金) 22:04:550688デフォルトの名無しさん
2010/07/17(土) 00:06:110689デフォルトの名無しさん
2010/07/17(土) 00:08:11boostの方使えってこと?
0690デフォルトの名無しさん
2010/07/17(土) 00:10:20C++標準化委員会よりスキルが上な自信があって、さらに彼らが信用できないと考えてるから
0691デフォルトの名無しさん
2010/07/17(土) 00:52:29http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
にvectorやSTLという単語が出てくることからもわかるように、GoogleではSTLのコンテナを禁止してない
0692デフォルトの名無しさん
2010/07/17(土) 01:06:16ってあるけど可変長配列のことじゃないんか。
0693デフォルトの名無しさん
2010/07/17(土) 01:20:16こういうやつ
void f( std::size_t size )
{
int buf[size] ; // 定数でなくても良い
}
だいたい、書いてあるじゃないか。
>Variable-length arrays and alloca are not part of Standard C++.
0694デフォルトの名無しさん
2010/07/17(土) 01:20:570695デフォルトの名無しさん
2010/07/17(土) 03:14:48C99機能が当たり前のように慣れて他のコンパイラに移行する妨げになるのを防ぐ
0696デフォルトの名無しさん
2010/07/17(土) 04:18:590697デフォルトの名無しさん
2010/07/17(土) 07:52:370698デフォルトの名無しさん
2010/07/17(土) 07:52:370699デフォルトの名無しさん
2010/07/17(土) 08:00:080700デフォルトの名無しさん
2010/07/17(土) 08:01:180701デフォルトの名無しさん
2010/07/17(土) 08:06:09VC10はどうなの?C++0xの修正は入って来たけどC99なんて皆無だぜ?
一番よく売れているコンパイラとちゃうん?
0702デフォルトの名無しさん
2010/07/17(土) 08:07:06可変長配列はC++のようにライブラリで組み込み感覚で使えるような対応ができないから言語仕様で対応するしかないからだろう。
ライブラリーだとスパース配列とか特定用途で効率のいい配列とか簡単に対応できる。
restricは普通のコンパイラはベンダ拡張で装備されてるしな。
0703デフォルトの名無しさん
2010/07/17(土) 09:28:42皆無? ほんとに? c99で拡張されたprintf()の"%lf"も使えないの?
0704デフォルトの名無しさん
2010/07/17(土) 10:00:460705デフォルトの名無しさん
2010/07/17(土) 10:11:29>>703
2008→2010でC++0xに少し対応したけどC99の対応は変わってない
ってことじゃないの?
もしそれに関して詳しく知ってるなら教えてくれない?
0706デフォルトの名無しさん
2010/07/17(土) 11:35:120707デフォルトの名無しさん
2010/07/17(土) 11:38:59ハッシュ値でswitchすればいいんじゃね?そのほうが速いだろうし。
0708デフォルトの名無しさん
2010/07/17(土) 12:57:46C++かC++0xがこれからの時代のトレンドですよ
だいたいC99なんてスレ立ってないでしょ?
0709デフォルトの名無しさん
2010/07/17(土) 14:14:00ひどい2ch脳
0710デフォルトの名無しさん
2010/07/17(土) 14:20:410711デフォルトの名無しさん
2010/07/17(土) 14:29:330712デフォルトの名無しさん
2010/07/17(土) 15:06:190713デフォルトの名無しさん
2010/07/17(土) 15:12:59書いた人の癖かヘッダジェネレータの出力がああなっているとしか
0714デフォルトの名無しさん
2010/07/17(土) 16:24:00それでも不自然な部分は書いた人のくせではなく、GNUのインデントスタイルのせいかと。
0715デフォルトの名無しさん
2010/07/17(土) 18:47:07class などの語を混ぜたりして弄ってみたのですが、うまくコンパイルできずにいます。
最近のC++コンパイラではどのように書けばよいのでしょうか?
template <typename T> class a {
public:
class b { };
static b x; ///< これを宣言したい
};
template <typename T> a<T>::b a<T>::x; ///< ここがVS2010でエラー
0716デフォルトの名無しさん
2010/07/17(土) 18:52:41template <typename T> a::b a::x
0717デフォルトの名無しさん
2010/07/17(土) 18:55:450718デフォルトの名無しさん
2010/07/17(土) 18:57:53その場合a<T>::bは型であることを明示する必要がある
template <typename T> typename a<T>::b a<T>::x;
0719デフォルトの名無しさん
2010/07/17(土) 19:06:32>>717-718で正常にコンパイルできました
VS2010の出していたwarning 「依存名は型ではありません。'typename' を持つプレフィックスは型を示します。」の意味がやっとわかりました
ほんと助かりました
ありがとう!ありがとう!
0720デフォルトの名無しさん
2010/07/17(土) 19:19:140721デフォルトの名無しさん
2010/07/17(土) 19:36:500722デフォルトの名無しさん
2010/07/17(土) 20:36:14日本語の意味がやっと判ってよかったね。
0723デフォルトの名無しさん
2010/07/17(土) 23:39:33{
return std::unique_ptr<int>( new int );
}
std::unique_ptr<int> a;
std::unique_ptr<int> b;
a = Get();
a = b;
a = Get();は通って
a = b;の方はエラーになるんだけどなんで?
0724デフォルトの名無しさん
2010/07/17(土) 23:46:450725デフォルトの名無しさん
2010/07/17(土) 23:51:34a=Get();は右辺値参照なのでムーブが行われるから通る。
a=b;はコピーなんでエラーになる。
0726デフォルトの名無しさん
2010/07/18(日) 01:03:23ってのは右辺値参照って言うのか。
C++0xの機能を知らないうちに使ってたわけね。
0727デフォルトの名無しさん
2010/07/18(日) 06:42:220728デフォルトの名無しさん
2010/07/18(日) 19:07:31右辺値参照は知らなくても恩恵にあずかれるのが凄い。
その分ライブラリ書く人は大変だけどな。
0729デフォルトの名無しさん
2010/07/18(日) 21:01:40{
public:
boost::ptr_list<T> list;
class I
{
public:
boost::ptr_list<T>::iterator i;
boost::ptr_list<T>::reverse_iterator r;
};
};
reverse_iteratorでエラーになるんですけど何故でしょうか?
0730デフォルトの名無しさん
2010/07/19(月) 09:33:100731デフォルトの名無しさん
2010/07/19(月) 19:37:37>>715-719と同じで
typename boost::ptr_list<T>::iterator i;
typename boost::ptr_list<T>::reverse_iterator r;
とする必要がある
0732デフォルトの名無しさん
2010/07/19(月) 19:56:560734デフォルトの名無しさん
2010/07/20(火) 19:19:44C++ではシングルトンパターンにするしかないんですか?
0735デフォルトの名無しさん
2010/07/20(火) 19:32:39シングルトンはstaticじゃないよ。
0736デフォルトの名無しさん
2010/07/20(火) 19:33:370737デフォルトの名無しさん
2010/07/20(火) 20:58:160738デフォルトの名無しさん
2010/07/20(火) 21:01:11どんなの?
0739デフォルトの名無しさん
2010/07/20(火) 23:02:480740デフォルトの名無しさん
2010/07/20(火) 23:24:42・・・というメタな主張で相容れないものを感じるのさ
0741デフォルトの名無しさん
2010/07/20(火) 23:43:20class Sub : public Base{};
class P
{
public:
virtual ~P(){ delete base; }
template<class T> void Create(){ base = new T(); }
template<class T, class ARG0> void Create(ARG0 arg0){ base = new T( arg0 ); }
private:
Base* base;
};
P p;
p.Create<Sub>();
ユーザーにnew演算子を使わせたくないんで、テンプレートでnewを隠蔽するのは設計的にアリですか?
0742デフォルトの名無しさん
2010/07/21(水) 00:08:530743デフォルトの名無しさん
2010/07/21(水) 07:16:260744デフォルトの名無しさん
2010/07/21(水) 07:21:05unique_ptrを使え。
0745デフォルトの名無しさん
2010/07/21(水) 07:21:470746デフォルトの名無しさん
2010/07/21(水) 07:59:300747デフォルトの名無しさん
2010/07/21(水) 08:37:230748デフォルトの名無しさん
2010/07/21(水) 08:58:14C++0xでないとムーブしようとするとコンパイルエラーが出る
ムーブ出来ない環境で使っても意味がない
0749デフォルトの名無しさん
2010/07/21(水) 08:58:59○>>744
0750デフォルトの名無しさん
2010/07/21(水) 08:59:330751デフォルトの名無しさん
2010/07/21(水) 09:41:370752デフォルトの名無しさん
2010/07/21(水) 10:57:390753デフォルトの名無しさん
2010/07/21(水) 22:05:16文字数を取得
文字データをバッファに格納
をしたいのですが
seekgみたいに文字列を末尾までカウントしたり
readみたいに文字列をバッファに文字数分格納したり
することができる関数ってありますか?
それとも他になにかいい方法ありますか?
0754デフォルトの名無しさん
2010/07/21(水) 22:13:120755デフォルトの名無しさん
2010/07/21(水) 22:21:24{
public:
template< int N > Foo(){ printf( "%d\n", N ); }
};
どうすればFooのコンストラクタを呼び出すことが出来ますか。
0756デフォルトの名無しさん
2010/07/21(水) 22:24:250757デフォルトの名無しさん
2010/07/22(木) 00:29:21初めに呼び出されたときですか?
Windows 7です
0758デフォルトの名無しさん
2010/07/22(木) 07:20:02seekg(), read() を使えばいいんじゃないの?
0759デフォルトの名無しさん
2010/07/22(木) 07:49:05関数ローカルなら初めて実行されたとき、そうじゃなければ main() 開始の前。
だいたいこんなところ。
0760デフォルトの名無しさん
2010/07/22(木) 16:21:44ちょっと話が変わるかも知れないけど、
異なる翻訳単位にある「ローカルでない静的オブジェクト」の初期化の順番はきめられていない。
って知っている?
たぶんしらなさそうなんで
ttp://cheesy.dip.jp/diary/archives/107
これとか読んどいてね。
0761デフォルトの名無しさん
2010/07/22(木) 22:15:08「俺もつい最近知った。」まで読んだ
0762デフォルトの名無しさん
2010/07/22(木) 22:28:45?
0763デフォルトの名無しさん
2010/07/23(金) 19:04:17どうやって防ぐの?
0764デフォルトの名無しさん
2010/07/23(金) 19:09:300765デフォルトの名無しさん
2010/07/23(金) 19:09:430766デフォルトの名無しさん
2010/07/23(金) 19:27:28> for(int i = 0; i < v.size(); ++i)
そのシチュエーションで出て来るのか。
0767デフォルトの名無しさん
2010/07/23(金) 20:31:580768デフォルトの名無しさん
2010/07/23(金) 20:36:030769デフォルトの名無しさん
2010/07/23(金) 20:40:40v.size()の戻りはstd::size_tだ。
for(std::size_t i = 0; i < v.size(); ++i)
でおk
0770デフォルトの名無しさん
2010/07/24(土) 00:23:070771デフォルトの名無しさん
2010/07/24(土) 00:53:58int振り切るsizeとか64bitだとありえるんだよなー。すげーなー。
0772デフォルトの名無しさん
2010/07/24(土) 01:36:50いい加減に signed 側が負にならないことが明らかなシチュエーションでは黙ってて欲しい。
if (0 <= i && i < v.size())
とか。
0773デフォルトの名無しさん
2010/07/24(土) 02:02:12なんてやってた
0774デフォルトの名無しさん
2010/07/24(土) 02:25:05中途半端だな。
型を合わせるんなら size_type 使わないと。
こういうときに decltype(v.size()) が欲しくなるのかな。
0775デフォルトの名無しさん
2010/07/24(土) 02:25:490776デフォルトの名無しさん
2010/07/24(土) 02:26:210777デフォルトの名無しさん
2010/07/24(土) 02:27:140778デフォルトの名無しさん
2010/07/24(土) 15:10:03libxml2でもいいんだが、クラスっぽく動くライブラリがあったらなぁと。
0779デフォルトの名無しさん
2010/07/24(土) 15:53:000780デフォルトの名無しさん
2010/07/24(土) 16:31:120781デフォルトの名無しさん
2010/07/24(土) 21:39:39X::size_typeは非負の整数型と規定されてるのでunsigned intで受けてもいいんじゃないかな
0782デフォルトの名無しさん
2010/07/24(土) 21:54:55な処理系のためにわざわざ地雷を埋め込む理由が分からない
0783デフォルトの名無しさん
2010/07/24(土) 21:57:510784デフォルトの名無しさん
2010/07/24(土) 22:38:24地雷じゃねーだろ。
比較は、大きい方の型に拡張して行われるんだから。
「素人には地雷に見えることが問題」というならわからんでもないが。
0785デフォルトの名無しさん
2010/07/24(土) 22:40:33v.size() > UINT_MAXのケースを想定して
地雷ということか。
0786デフォルトの名無しさん
2010/07/24(土) 22:45:14配列の添え字にintを使っているコードは
全て地雷ということになるな。
sizeof(int) != sizeof(size_t) な環境(現実的には大抵の64bit環境)であれば。
0787デフォルトの名無しさん
2010/07/24(土) 23:56:280788デフォルトの名無しさん
2010/07/25(日) 00:06:090789デフォルトの名無しさん
2010/07/25(日) 00:11:240790デフォルトの名無しさん
2010/07/25(日) 00:43:43ところがVCでは(ry
0791デフォルトの名無しさん
2010/07/25(日) 00:59:33size_type size() const;なんだからsize_typeで受けるのが当たり前。
size_tはまだ許せるとして、なんでintやunsignedを持ち出すの?
0792デフォルトの名無しさん
2010/07/25(日) 01:36:51なんて、最低だね
0793デフォルトの名無しさん
2010/07/25(日) 01:39:45と言っている点に文句は無い。
問題はそうやってどんどんとっつきにくくわかりにくくしていく
言語仕様(ライブラリ含む)が、どうしようもなくドロドロだということ。
0794デフォルトの名無しさん
2010/07/25(日) 01:39:480795デフォルトの名無しさん
2010/07/25(日) 01:44:19sizeof(Array) / sizeof(Array[0]) はsize_t型になるのだから
Arrayの添え字には、size_tもしくはptrdiff_tを使うのが当たり前ってことかね?
0796デフォルトの名無しさん
2010/07/25(日) 01:56:57今度確認してみよう… もしかしてVC++だから?
0797デフォルトの名無しさん
2010/07/25(日) 02:03:55auto が「ない」状況では仕方あるまい
0798デフォルトの名無しさん
2010/07/25(日) 02:11:460799デフォルトの名無しさん
2010/07/25(日) 02:28:360800デフォルトの名無しさん
2010/07/25(日) 03:39:06for (auto sz = v.size(), i = 0u; i < sz; ++i) {}
とでも書けばいいか
0801デフォルトの名無しさん
2010/07/25(日) 04:29:320802デフォルトの名無しさん
2010/07/25(日) 04:58:30扱うなら iterator よりも index の方が
普通は慣れてることもあって使い易いよ。
0803デフォルトの名無しさん
2010/07/25(日) 13:27:55>auto があれば
すでにあるよね?auto int i = 0;とか書けるじゃん
0804デフォルトの名無しさん
2010/07/25(日) 13:39:47そのautoじゃなくてC++0xのautoでしょ
0805デフォルトの名無しさん
2010/07/25(日) 13:45:020806デフォルトの名無しさん
2010/07/25(日) 14:18:42VC++もターゲットが64ビット環境ならsize_tは64ビットですよ。
0807デフォルトの名無しさん
2010/07/25(日) 14:20:02に対する
std::format
みたいなのありますか?
0808デフォルトの名無しさん
2010/07/25(日) 21:42:3703にも0xにもないよ
0xでは可変長引数テンプレートprintfでだいたい代替できる
>>763-806
イテレータ使えよ
0809デフォルトの名無しさん
2010/07/25(日) 21:50:480810デフォルトの名無しさん
2010/07/27(火) 09:44:09このときアプリからは MyLib2.so のみをリンクすれば使えるようにしたいです。
MyLib1.a を MyLib2.so の中に埋め込むにはどうすればいいでしょうか?
0811デフォルトの名無しさん
2010/07/27(火) 09:46:360812デフォルトの名無しさん
2010/07/27(火) 20:46:25std::vector<int> a;
typeof(a)::iterator b;
みたいなことってどうやったらできる? 一行目がvectorだったりdequeだったりしても二行目を書き換えずに済ませたい
0813デフォルトの名無しさん
2010/07/27(火) 21:14:13auto b = a.begin();
0814デフォルトの名無しさん
2010/07/27(火) 21:14:47こう?
http://msdn.microsoft.com/en-us/library/dd537655.aspx
0815デフォルトの名無しさん
2010/07/27(火) 21:53:37typedef std::vector<int> container;
container a;
container::iterator b(a.begin());
必要に応じてtypedef宣言をdequeに置き換えればいい
0816デフォルトの名無しさん
2010/07/28(水) 01:30:280817デフォルトの名無しさん
2010/07/28(水) 09:21:20VS2010にバージョンアップして
>>813
の一択ですよ
0818デフォルトの名無しさん
2010/07/29(木) 13:58:02じゃあ教えてくれ、以下のようなことをやるのにイテレータを使って
どうやればいい?
for (unsigned int i = 0; i < n; i++) {
for (unsigned int j = i; j < n; j++) {
if (i != j) {
v[i][j] = v[j][i];
v[j][i] = 0;
}
}
イテレータだとループ中、現在位置が分からないというのが最大のネック
0819デフォルトの名無しさん
2010/07/29(木) 14:26:25なんでベクター限定のコード書いてイテレータがどうとか言ってんの?
ベクター限定なんだからそのままのコードでいいじゃん。
全然関係ないけどそのコード自体見直した方がいいよ。
「私は劣化プログラマです」って言ってるようなものだよw
0820デフォルトの名無しさん
2010/07/29(木) 14:44:33逆順イテレータとか使いにくそうじゃない?
0821デフォルトの名無しさん
2010/07/29(木) 15:32:13unsigned int使ってるって言ったの俺だよ。
劣化プログラマですっていうのは受け入れます。
元々unsigned int使わざるおえなくなったのは上のvectorの
場合なんだ。
イテレータ万能というように言う人が結構いたので、
あらためて質問という意味で書かせてもらった。
これはイテレータ使わないよね?
あと、間違えがあって、
× v[i][j] = v[j][i];
○ v[i][j] += v[j][i];
イテレータを使わないとしたら、
インデックスになると思いますが、インデックスは
unsigned intではなかったら何を使うと良いでしょう。
さらに、このコードがクソ過ぎると思われた方は、
根本的に添削していただけると助かります。
0822デフォルトの名無しさん
2010/07/29(木) 15:44:18別に無理して使うものではないんだよ。価値を感じる(理解)人が使えばいい。
コンテナであればベクターであろうがリストあろうが同じコードで処理できるんだよ。
こういう抽象化に興味がない人には無用の長物。
コンテナを逆順に走査する必要があったときにリバースイテレータを使えば、
正順と全く同じコードで逆順が実現できる。
この辺の意味がわからん人が無理して使うような物でない。
0823デフォルトの名無しさん
2010/07/29(木) 15:49:08いや、そうじゃなくてさ
for(std::size_t i = 0; i < v.size(); ++i)
の例に「イテレータ使えよ」と言っただけなのに
なんで>>818みてーな例だして噛み付いてきてんの?アホなの?
0824デフォルトの名無しさん
2010/07/29(木) 15:55:15すまん。C++始めて2週間なのです。アホです。
どんな場合でもイテレータは使えるのかと本気で期待しました。
が、数値計算的なことには無力と分かって良かったです。
>>822
もっと抽象的な処理で有効ということですね。
ありがとうございます。
0825デフォルトの名無しさん
2010/07/29(木) 15:55:20if文無駄じゃね?
0826デフォルトの名無しさん
2010/07/29(木) 15:55:36>イテレータ万能というように言う人が結構いたので、
多分意味を取り違えてる。
>これはイテレータ使わないよね?
やりたいことはベクター(配列)であることが絶対条件だし、
配列のインデックスでアクセスしたいんだから、素直にインデックスでアクセスしろよ。
>根本的に添削していただけると助かります。
if 文使う必要もないでしょ。普通のプログラマなこんなコードは書かない。
0827デフォルトの名無しさん
2010/07/29(木) 15:59:26>が、数値計算的なことには無力と分かって良かったです。
全然理解できてないぞw
0828デフォルトの名無しさん
2010/07/29(木) 16:02:08そうだね。まあListなら使うしかなさそうだけど。
stlのバグ見つけたときから過信して何でも使わないようにしてる。
0829デフォルトの名無しさん
2010/07/29(木) 16:15:58現在位置ならstd::distanceで求めれば?
0830デフォルトの名無しさん
2010/07/29(木) 16:26:050831デフォルトの名無しさん
2010/07/29(木) 16:30:50ありがとうございます。STLは奥深いですね。
勉強します。
0832デフォルトの名無しさん
2010/07/29(木) 16:38:44それでいい、今の君には無用の長物
0833デフォルトの名無しさん
2010/07/29(木) 16:54:54気になるのでどの辺がつっこみどころなのか教えてくれませんか
0834デフォルトの名無しさん
2010/07/29(木) 17:18:270835デフォルトの名無しさん
2010/07/29(木) 17:27:36気にしない方がいいよ。
>>830 は size_type を使うように誰かに教わって、それが全てだと思い込んでいるのだろうw
0836デフォルトの名無しさん
2010/07/29(木) 17:40:32彼自身も知りたがってるとは考えられないのか?
0837デフォルトの名無しさん
2010/07/29(木) 18:58:51イテレータで…という質問の答えにはならないけどこうかな
// boost-ublas
auto u = triangular_adaptor<decltype(v), upper>(v);
auto su = triangular_adaptor<decltype(trans(v)), strict_upper>(trans(v));
auto value = u + su;
確かにイテレータは行列や四元数なんかのアクセスには適当じゃない
行列は行列で別の抽象化の技法があるのでそっちを使えばいいんじゃないかな
0838デフォルトの名無しさん
2010/07/29(木) 19:17:19すげっ、けど変態
0839デフォルトの名無しさん
2010/07/29(木) 19:30:080840デフォルトの名無しさん
2010/07/29(木) 20:26:270841デフォルトの名無しさん
2010/07/29(木) 20:37:190842デフォルトの名無しさん
2010/07/29(木) 20:45:58それは添字演算子
0843デフォルトの名無しさん
2010/07/29(木) 21:28:550844デフォルトの名無しさん
2010/07/30(金) 00:53:060845デフォルトの名無しさん
2010/07/30(金) 01:15:280846デフォルトの名無しさん
2010/07/30(金) 05:11:20std::is_enum
0847デフォルトの名無しさん
2010/07/30(金) 12:01:540848デフォルトの名無しさん
2010/07/30(金) 12:06:310849デフォルトの名無しさん
2010/07/30(金) 14:38:20おお、こんな関数がありましたか。
ちなみに0x以前にもあります?
0850デフォルトの名無しさん
2010/07/30(金) 21:30:400851デフォルトの名無しさん
2010/07/30(金) 21:54:520852デフォルトの名無しさん
2010/07/30(金) 22:09:270853デフォルトの名無しさん
2010/07/30(金) 22:20:48ベクタはメモリが一本だから、旧来のファイル等のAPIに使える。
キューは順番が必要なとき使う。
デキューは上記のとき意外で使う。
俺は特に制約が無いときはデキュー使ってる。
細かくアロケートしてメモリ効率よさそうだからな。
0854デフォルトの名無しさん
2010/07/30(金) 23:05:40シーケンスの両端への挿入/削除が多ければdeque
そうでないならvector を使えと規格には書いてある
queueとstackはその名のとおりだが用途に悩むくらいなら使わなくていいと思う
どうせ中身はdequeだし
規格には- の参照先はこちら↓
http://www.kuzbass.ru/docs/isocpp/lib-containers.html#lib.sequence.reqmts の 2
0855デフォルトの名無しさん
2010/07/31(土) 14:01:34やるにはどうしたらできますか?
0856デフォルトの名無しさん
2010/07/31(土) 14:06:290857デフォルトの名無しさん
2010/07/31(土) 14:07:30wchar_t a = L"あいうえお";
std::wstring b = L"かきくけこ";
wprintf(L"%s %s\n",a,b.c_str());
とかやればいいんじゃないの
0858デフォルトの名無しさん
2010/07/31(土) 14:08:210859デフォルトの名無しさん
2010/07/31(土) 14:11:58教えてください。
0860デフォルトの名無しさん
2010/07/31(土) 14:18:580861デフォルトの名無しさん
2010/07/31(土) 14:59:230862デフォルトの名無しさん
2010/07/31(土) 16:10:470863デフォルトの名無しさん
2010/08/01(日) 00:24:36ID番号を持たせたいです。
0864デフォルトの名無しさん
2010/08/01(日) 00:37:32を使って
"あああああ"を"(1)(2)(3)(4)(5)"
のようにマッチする度に値を変化させて置換する方法ってありますか?
0865デフォルトの名無しさん
2010/08/01(日) 00:38:42なにを困ってるかわからん。くわしく
0866デフォルトの名無しさん
2010/08/01(日) 00:40:56{
virtual int id = 0;
}
のようなこと
0867デフォルトの名無しさん
2010/08/01(日) 00:51:520868デフォルトの名無しさん
2010/08/01(日) 01:10:300869デフォルトの名無しさん
2010/08/01(日) 01:10:370870デフォルトの名無しさん
2010/08/01(日) 01:14:17策定に私を参加させなかったのが裏目に出ましたね
0871デフォルトの名無しさん
2010/08/01(日) 01:16:36どんな動作を期待してるんだよ
0872デフォルトの名無しさん
2010/08/01(日) 01:23:210873デフォルトの名無しさん
2010/08/01(日) 11:09:33……
case func() : // コンパイルできない
……
なぜcaseのところにfuncが入らないのでしょうか?
0874デフォルトの名無しさん
2010/08/01(日) 11:11:28constじゃなくconstexprを付けないとだめ
0875デフォルトの名無しさん
2010/08/01(日) 12:06:550876デフォルトの名無しさん
2010/08/01(日) 12:16:17int GetFive() { return 5; }
int some_value[GetFive() + 5]; // 10 要素の整数配列を作りたいが、C++ では不正。
GetFive() + 5 が定数式でないため、これは C++ では不正となる。
実際には GetFive は実行時に一定値を返すが、
コンパイラにそれを知らせる方法がないのである。
理論上、関数はグローバル変数に影響を与える、
実行時に結果が変わる他の関数を呼ぶ、などの理由がある。
0877デフォルトの名無しさん
2010/08/01(日) 13:19:13constにconstexprの機能を持たせた場合予想される弊害を答えなさい。
0878デフォルトの名無しさん
2010/08/01(日) 13:27:44どこにつけるconstについてか述べなさい
0879デフォルトの名無しさん
2010/08/01(日) 13:28:380880デフォルトの名無しさん
2010/08/01(日) 13:29:53switch(x)
{
case func1(): goto L1;
case func2(): goto L2;
}
goto L3;
L1: //func2() が実行されたかどうかわからない
L2: //func1() が実行されたかどうかわからない
L3:
# 配列やグローバルの話に飛ぶ必要はない
0881デフォルトの名無しさん
2010/08/01(日) 13:40:29case func():
...
// a.cpp
const int func() {
return ...;
}
// a.h
const int func();
constが付いていてもコンパイル時定数ではないのでNG
0882デフォルトの名無しさん
2010/08/01(日) 13:51:07>ほにゃららが実行されたか分からない
分からなくていい場合は?
>>881
>constが付いてもいてもかくかくしかじか
コンパイル時定数ではなくてもいい場合は?
C++より自由に何でも書けてプログラマーの思考を阻害することなく、そのまま表現できる言語ないですか?
0883デフォルトの名無しさん
2010/08/01(日) 13:53:14ただしcaseラベルはコンパイル時定数でなければならない
0884デフォルトの名無しさん
2010/08/01(日) 16:26:47C++にこだわりがないのなら、RubyとかPythonとかを使えばいいじゃない
0885デフォルトの名無しさん
2010/08/01(日) 16:46:59今はModern C++ Designを読んでるけど、なにこの変態言語…
みんなC++の言語仕様を全部理解して使ってるの?
0886デフォルトの名無しさん
2010/08/01(日) 16:49:470887デフォルトの名無しさん
2010/08/01(日) 16:51:120888デフォルトの名無しさん
2010/08/01(日) 16:53:22C++0xでぐぐるともっと幸せになれるよ!
0889デフォルトの名無しさん
2010/08/01(日) 16:53:500890デフォルトの名無しさん
2010/08/01(日) 20:07:37わからなくていいかどうかを、コンパイラに通知する方法を思いついたら禿にでも相談してみては?
0891デフォルトの名無しさん
2010/08/01(日) 20:54:47> 分からなくていい場合は?
if文使えばいいでしょ。バカなんじゃないの?
0892デフォルトの名無しさん
2010/08/01(日) 21:20:330893デフォルトの名無しさん
2010/08/01(日) 21:27:05お前のところはなんでもありでやってるのか
0894デフォルトの名無しさん
2010/08/01(日) 21:32:36新しい機能使うときは当然慎重になるべきだが規約で縛る必要はないと思う。
0895デフォルトの名無しさん
2010/08/01(日) 21:36:15アホプログラマーが好き勝手にやらかすのを黙って見てるのはもっとアホだろ。
0896デフォルトの名無しさん
2010/08/01(日) 21:40:52規約を定期的に見直す作業するならいいけど、
そんな余裕はないだろうから規約制限しない方がいいと思ってる。
0897デフォルトの名無しさん
2010/08/01(日) 21:44:41・制限しない方がいい
・定期的に見直すべきだ
・新しい機能使うときは当然慎重になるべき
全部矛盾してるぞ。
0898デフォルトの名無しさん
2010/08/01(日) 21:47:120899デフォルトの名無しさん
2010/08/01(日) 21:49:02第一義的には制限するべきではないが機能追加には慎重になるべき。
稼動実績ないわけだから当然だよなw
仮に定期的に規約見直すならば、制限してもいいかなといっている。
0900デフォルトの名無しさん
2010/08/01(日) 21:49:270901デフォルトの名無しさん
2010/08/01(日) 21:50:05慎重になるかどうかはプログラマーによるわけで、慎重にならないバカなプログラマーが出ないように規約で制限してんだろ。
0902デフォルトの名無しさん
2010/08/01(日) 21:51:06だめだこりゃ。なんで規約があるのかを考えろよ
0903デフォルトの名無しさん
2010/08/01(日) 21:51:41リーダーが責任を負うレベルでの話だよwww
0904デフォルトの名無しさん
2010/08/01(日) 21:53:27規約の意味とか論理飛躍も甚しすぎるんだがwww
0905デフォルトの名無しさん
2010/08/01(日) 21:55:59どのレベルでとか誰が判断するんだ?
ひとつの問題あって、それが個人レベルかリーダーレベルか。
そういうどうでも良い問題を避けるためにも規約は必要。
定期的に規約を見直すのは必要なことだが、出来ないなら規約はいらないというのは根本が間違っている。
0906デフォルトの名無しさん
2010/08/01(日) 21:57:000907デフォルトの名無しさん
2010/08/01(日) 22:03:03ぶっちゃけプログラマなんて何の責任もないんだがw
問題起きたらプロジェクトリーダーが全て責任を追わなきゃいけないのは当然だろw
オマエはそのレベルの立場の人間じゃないのか?
規約の見直し作業を仕事に組み込む余裕なんてないから無理だろって言ってるんだけどな。
なんか話がまとまらないしスレチ言われたからもうやめる。
0908デフォルトの名無しさん
2010/08/01(日) 22:07:560909デフォルトの名無しさん
2010/08/01(日) 22:13:32規約なきゃプログラマーは好きな機能というか自分の使いやすい機能を使うんだぜ?
その機能のせいでバグが発生したとして、リーダーに責任取れと?
そうならんように規約で制限したりして、確実なコーディングをするようにしているんだろ?
リーダーが機能追加に慎重になったって、規約がないんだからプログラマーが機能追加に慎重になる保証はないじゃないか。
そういう慎重にならないバカなプログラマーが出ないように規約で制限しているといっているんだが。
> ぶっちゃけプログラマなんて何の責任もないんだがw
責任を取らないやつがルール無用で好き勝手しないようにってのが理解できないのかな?
0910デフォルトの名無しさん
2010/08/01(日) 22:18:430911デフォルトの名無しさん
2010/08/01(日) 22:18:45一応戦力なんだが、すき放題やらせたら周りに悪影響が及ぶから
そういうのを未然に防ぐためにはある程度規約が必要
0912デフォルトの名無しさん
2010/08/01(日) 22:27:08アニキかっけーっす!
マジリスペクトっす!
0913デフォルトの名無しさん
2010/08/01(日) 22:28:05規約がいらないと言ってるんじゃなくて、機能を制限するような規約がいらないと
言っている。
文盲共そこを間違えるな><
要は良い機能があったとき使わせてくれる環境にしろと言ってんだよ。
そのときに慎重になるべきでリーダーレベルで責任をとれと言ってるんだ。
俺の文章力のなさは悪いと思うがそういうことだ。
0914デフォルトの名無しさん
2010/08/01(日) 22:29:32コーディング基準は一切なしというのも極論すぎるが
それでモグラ叩きが終わりになると思ってる奴はもっとダメ
0915デフォルトの名無しさん
2010/08/01(日) 23:13:05> 要は良い機能があったとき使わせてくれる環境にしろと言ってんだよ。
それには同意できるが、
> 機能を制限するような規約がいらない
追加する機能がどんな機能で、また追加したことによってどういうメリット、デメリットがあるか。
そういう調査や確認もせずに「利用してしまうプログラマー」がいるから規約として制限している。
本当に良い機能を持ってきて、なぜ追加できないのか、そんな制限取っ払えというのは理解できるが
それが良い機能だとだれが証明してくれるのか。場合によっては重大な欠陥を引き起こさないとも限らない。
他のプログラマーが知らなかったことで、インターフェイスの違いによって誤動作を起こす可能性だってある。
プログラマーの能力の問題ではあるがプロジェクトとして複数の人間でやるのなら協調してやらないとだめだろ。
リーダーに良い機能を紹介説明しても取り合ってもらえないのなら、規約ではなくリーダーを責めろよ。
キミは「良い機能」だけを見て規約で制限することの間違いを説いているが、「悪い機能」も存在していることも忘れてはならない。
客に納品するのに、「良い機能を制限して効率を落とす」のと、「悪い機能を制限して欠陥を取り除く」のを天秤にかけるべき。
基本的には「悪い機能を制限して欠陥を取り除く」を行い、「良い機能を例外として取り扱う(規約上での使用を認める)」というのがベストではないだろうか。
キミは「良い機能を例外として取り扱う(規約上での使用を認める)」ことが出来ないなら、「悪い機能を制限して欠陥を取り除く」こともするべきではないと言っているんだ。
その間違いに気付いて欲しい。
0916デフォルトの名無しさん
2010/08/01(日) 23:28:390917デフォルトの名無しさん
2010/08/01(日) 23:28:51「悪い機能を制限」したらバグが減るのかい?
どうやって制限違反を検出するの?
制限内の機能を使ってもバグは出るだろう?
0918デフォルトの名無しさん
2010/08/01(日) 23:29:53作ったことは無いけど、空のストリームイテレータなら作れるような気がする
0919デフォルトの名無しさん
2010/08/01(日) 23:56:42原因が特定しにくくなるようなバグを未然に防ぐために規約があるんだ
多少の不便を強いてでも出したくない(特定困難な)バグがあることぐらいわかるだろ
0920デフォルトの名無しさん
2010/08/01(日) 23:58:36昔オレの会社では例外は禁止とかハンガリアンで書けとかあったなw
0921デフォルトの名無しさん
2010/08/02(月) 00:03:310922デフォルトの名無しさん
2010/08/02(月) 00:04:070923デフォルトの名無しさん
2010/08/02(月) 00:06:420924デフォルトの名無しさん
2010/08/02(月) 00:08:23> 「悪い機能を制限」したらバグが減るのかい?
「悪い機能」なんだから、悪い影響を与えるに決まっていると思うが。
> どうやって制限違反を検出するの?
検出できないなら、制限せずに認めてあげるのっておかしいよ。
仕事の怠慢が発見されないなら、それが正当化されるわけではない。
> 制限内の機能を使ってもバグは出るだろう?
ヒューマンエラーなら、制限内かどうかは関係ない。出るときは出るし出ないときは出ない。
機能に依存したバグ(その機能が内在しているバグ)なら、その機能の使用を改めるべき。
何度も言うが、制限するのは「規約にない機能だから」ではない。
一律に制限するのは「悪い機能の可能性がある」から。
それが良い機能だといえるならリーダーに掛け合えば良い。
それでも利用できないならそれはリーダーの問題であって規約の有無は関係ない。
リーダーに決定権がないなら、決定権のある者の問題だな。
0925デフォルトの名無しさん
2010/08/02(月) 00:12:59> 機能に依存したバグ(その機能が内在しているバグ)なら、その機能の使用を改めるべき。
たとえば何のことを言ってるの?
検出もできない、制限したってバグは出る。それなら余計な文書やリーダーに掛け合うだのいう
手間が増えてるだけじゃないか?
全部まとめてバグ出さなけりゃいいんだろ?
0926デフォルトの名無しさん
2010/08/02(月) 00:21:140927デフォルトの名無しさん
2010/08/02(月) 00:26:370928デフォルトの名無しさん
2010/08/02(月) 00:28:160929デフォルトの名無しさん
2010/08/02(月) 00:32:16別に効率悪くするために規約つくってるわけじゃないし
「そんなコーディングしたらミスがでやすいですよ」っていう先人のアドバイスだと思う
0930デフォルトの名無しさん
2010/08/02(月) 00:36:06> たとえば何のことを言ってるの?
>>917 の「制限内の機能を使って出たバグ」でその機能に内在しているバグのこと。
実際にあるかどうかは分からないが、そもそも話自体が抽象化したものなんだから具体例を挙げることは出来ない。
もし、そんな機能はないというなら、「悪い機能」はないというだけのこと。
が、悪魔の証明は不可能。
> 全部まとめてバグ出さなけりゃいいんだろ?
そんなのは不可能に近い。
というか、作る際にバグが出ないようにするのは間違いではないが、そんなことが出来るなら苦労はしない。
> 検出もできない、制限したってバグは出る。それなら余計な文書やリーダーに掛け合うだのいう手間が増えてるだけじゃないか?
その手間を惜しんで、ひどいバグを作り多大な損失を生むかもしれないというリスクとの天秤。
なんどもいうが、客に出した後、バグが発見されるよりは手間が増えるほうが結果的に労力は少なくて済む。
「余計な文書やリーダーに掛け合うだのいう手間」を惜しむ人間は共同作業はむかないと思う。
0931デフォルトの名無しさん
2010/08/02(月) 00:36:57でも大半の現場はそんなもんじゃね?
スケジュールいっぱいいっぱいだから作り込む時間がなかったりしてさ。
でも約束してるからどうしても作らなきゃいけない状況とかほんと悲惨。
0932デフォルトの名無しさん
2010/08/02(月) 00:37:540933デフォルトの名無しさん
2010/08/02(月) 00:42:18もう名前すら思い出せなくなっている。
ダンディ坂野だっけか。
0934デフォルトの名無しさん
2010/08/02(月) 00:43:250935デフォルトの名無しさん
2010/08/02(月) 00:55:51具体例を挙げることは出来ない?
そんな状態なのに、「何らかの」制限をかけて直近の手間を増やしたほうがいいのは確信しているの?
意味がわからん。
0936デフォルトの名無しさん
2010/08/02(月) 01:05:30労力と損失(リスク)との天秤だよ。
そのどちらを取るかということ。
自分なら労力をとる、というだけの話。
そりゃ世の中には直近の労力惜しむ会社もあるだろう。
降水確率の意義って知っているか?
それと似たようなもの。
0937デフォルトの名無しさん
2010/08/02(月) 01:09:24労力とではないだろw
安心とリスクの天秤だろwww
0938デフォルトの名無しさん
2010/08/02(月) 01:11:29「余計な文書やリーダーに掛け合うだのいう手間」->労力
「ひどいバグを作り多大な損失を生む」->損失
0939デフォルトの名無しさん
2010/08/02(月) 01:11:56具体的なリスクとして何を想定してるのか説明してくれないと話にならんな。
まぁスレ違いだし、このまま終わってもいいんだけど。
0940デフォルトの名無しさん
2010/08/02(月) 01:15:59そういう想定が出来ないから、規約なんていらないとか言えちゃうんだよな。
0941デフォルトの名無しさん
2010/08/02(月) 01:16:06新機能を入れるとその2つが出るってことだよね。
天秤の使い方がおかしいと思うけどw
0942デフォルトの名無しさん
2010/08/02(月) 01:18:180943デフォルトの名無しさん
2010/08/02(月) 01:21:390944デフォルトの名無しさん
2010/08/02(月) 01:27:05C++関係ないし何を言ってるのか。
0945デフォルトの名無しさん
2010/08/02(月) 01:29:07元は規約の話だろ。
規約による制限があるかないか。
その制限を超えるための労力 <-> 制限無しで使わせ発生する損失
つーかそんなことも分からないのか?
0946デフォルトの名無しさん
2010/08/02(月) 01:30:47何のつもりでしゃべってるのかさっぱりわからん。
0947デフォルトの名無しさん
2010/08/02(月) 01:32:20こんなシンプルな事がわからない輩がいるのかよ。
何が新しい機能を縛ることによる損失じゃあ
0948デフォルトの名無しさん
2010/08/02(月) 01:33:29お前馬鹿だな
0949デフォルトの名無しさん
2010/08/02(月) 01:40:08そのときに柔軟に対応してくれるといいよね。
0950デフォルトの名無しさん
2010/08/02(月) 02:00:23確かにそうだね
でもこの議論から(10年前にはその議論は終わっているという意見は置いといて)多重継承の使用の是非に関して結論は得られるか?
というと、多重継承に関して "何がよくて何がよくないのか?" とか "代替手段はなにがあるのか?" とかっていう議論を行うには
そのための下地の構築に失敗してるように見える
下地の無いままわいわいやってもいいけど、何も得られないんじゃないかな?
それに "下地の無いままわいわいやる" 用の板が隣にあるんだからそっちに移動したらいいと思う
まぁVIPとかに移動してもらってもいいけど
0951デフォルトの名無しさん
2010/08/02(月) 02:14:440952デフォルトの名無しさん
2010/08/02(月) 02:56:16そもそもコンパイラが対応していなければ使いようがないが。
多重継承に関してはデータメンバを持たないインタフェースクラス以外の
多重継承は禁止でいいのでは?
0953デフォルトの名無しさん
2010/08/02(月) 08:20:310954デフォルトの名無しさん
2010/08/02(月) 11:23:590955デフォルトの名無しさん
2010/08/02(月) 11:43:340956732
2010/08/02(月) 13:59:570957デフォルトの名無しさん
2010/08/02(月) 14:35:23template<class T, class U> U func(T x);
のような関数を作りたいのですが、このままでは
Foo x;
Bar y = func<Foo, Bar>(x);
のような書き方をしなければなりません。
templateパラメータUを引数から推測させ
Foo x;
Bar y = func<Bar>(x);
とするためにはどう記述すれば良いのでしょうか。
0958デフォルトの名無しさん
2010/08/02(月) 14:43:16おお、そんなキーワードが追加される予定なの?
その中ではnoexceptなメソッドのみしか呼び出せないとかできるとよりよいな。constメソッドみたいに。
0959デフォルトの名無しさん
2010/08/02(月) 14:49:57template<class U, class T> U func(T x);
0960デフォルトの名無しさん
2010/08/02(月) 14:53:520961デフォルトの名無しさん
2010/08/02(月) 15:30:24ありがとうございます!
0962デフォルトの名無しさん
2010/08/02(月) 19:18:290963デフォルトの名無しさん
2010/08/02(月) 20:47:050964デフォルトの名無しさん
2010/08/02(月) 21:18:44class U, class T の順番変わっただけだと思うのですが
これでよくなるのはどういうルールがあるのでしょうか
0965デフォルトの名無しさん
2010/08/02(月) 21:35:26理解するまで大して時間がかかる問題でもないし
0966デフォルトの名無しさん
2010/08/02(月) 21:36:56相談室の意味ねぇ!
0967デフォルトの名無しさん
2010/08/02(月) 21:38:110968デフォルトの名無しさん
2010/08/02(月) 21:38:470969デフォルトの名無しさん
2010/08/02(月) 21:40:59調べればすぐ分かる問題は自分で調べろよ。
その習慣をまず身につけてからの相談室だ。
こんなこと言ってる時間あればもう理解できると思うが。
0970デフォルトの名無しさん
2010/08/02(月) 21:42:130971デフォルトの名無しさん
2010/08/02(月) 21:42:550972デフォルトの名無しさん
2010/08/02(月) 21:43:420973デフォルトの名無しさん
2010/08/02(月) 21:57:460974デフォルトの名無しさん
2010/08/02(月) 22:13:13何も指定しない方のデフォルトをconstにした方がいいレベルだぞ
0975デフォルトの名無しさん
2010/08/02(月) 22:15:400976デフォルトの名無しさん
2010/08/02(月) 22:19:51struct をデフォルト public にせにゃならんようなのと同じしがらみだな
0977デフォルトの名無しさん
2010/08/02(月) 22:31:350978デフォルトの名無しさん
2010/08/02(月) 23:05:13int array[]
にアクセスするのに以下の関数を用意しましたが、コンパイルが通りません。
const int& Hoge::at( const int pos ) const{
return array[pos];
}
int& Hoge::at( const int pos ){
retrun static_cast<int&>( static_cast<const Hoge*>(this)->at(pos) );
}
どこが間違っているのしょうか?
0979デフォルトの名無しさん
2010/08/02(月) 23:08:21retrun array[pos];
}
でいいだろ。
0980978
2010/08/02(月) 23:48:48>>978はあくまでも例です。
実際は const int& Hoge::at( const int pos ) const
で色々処理をしてから return をしています。
その処理部分は int& Hoge::at( const int pos ) と共通ですので
非cont関数からconst関数を呼ぶようにしたいと思いました。
0981デフォルトの名無しさん
2010/08/02(月) 23:56:02static_cast -> const_cast
0982デフォルトの名無しさん
2010/08/03(火) 00:12:19const_cast -> const_const
0983デフォルトの名無しさん
2010/08/03(火) 07:47:55そういうチェック機能は規格には入ってないよ。できて警告どまり。
これも昔の const と似た状態なんだけどね。
0984デフォルトの名無しさん
2010/08/03(火) 21:09:260985デフォルトの名無しさん
2010/08/03(火) 21:56:580986デフォルトの名無しさん
2010/08/04(水) 00:35:514>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(768): warning C4995: 'wcscat': 名前が避けられた #pragma として記述されています。
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(295): warning C4995: 'vsprintf': 名前が避けられた #pragma として記述されています。
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(667): warning C4995: 'vswprintf': 名前が避けられた #pragma として記述されています。
こんな警告が出ちゃうんですが修正する方法ありますか?
0987デフォルトの名無しさん
2010/08/04(水) 01:32:18とりあえず、
1.
wcscpy_s wcscat_s vsprintf_s vswprintf_s を使う
2.
可能な限り早く、
(たとえば、stdafx.hの先頭で)
#define _CRT_SECURE_NO_WARNINGS
する
など
0988デフォルトの名無しさん
2010/08/04(水) 01:36:343.
可能な限り早く、
(たとえば、stdafx.hの先頭で)
#pragma warning( disable : 4995 )
する
など
だが、いずれにせよスレ違いだろう
0989デフォルトの名無しさん
2010/08/04(水) 01:47:47ありがとうございます.
0990デフォルトの名無しさん
2010/08/04(水) 04:39:580991デフォルトの名無しさん
2010/08/04(水) 09:41:400992デフォルトの名無しさん
2010/08/04(水) 09:49:310993デフォルトの名無しさん
2010/08/04(水) 09:52:27その前に埋めるんじゃねえ
0994デフォルトの名無しさん
2010/08/04(水) 09:53:030995デフォルトの名無しさん
2010/08/04(水) 10:06:190996デフォルトの名無しさん
2010/08/04(水) 11:21:18. // `ヽ、
. く. / ,. -―‐- 、', >
. |/ヘ∧/\/レヘ/ __|__ゝ | _|_ |_ ―ー-
. | | | O O || | | | | -ー―-、
. | | |、 r.┐ || / ̄:| ̄\ | __| __|_ )
. | | | `ー┴┴ '| | (_ノ ヽ l (__ノ ̄ヽ (_ノ ヽ /
. |∧∨ ヽ /.ヘ| |ヽ _
/ | | ∨ .| | i ___ ぃ l__ ぃ l /
/ 〈 〉 .〈 〉.|、 / ノ | \ | | /
. / / |`′ Y | `~` ''ー- 、 ( | / |/
. / ./ .| l | ./ \ ノ ノ o
/ ./ ̄`ー-−-、. | .| /
.( 二 ) ̄`ー、__ `l .|、 /
/〈, , ,ノ `ー-| l、 `ヽ /
. ( 二 ) 〉 //
. 〈 , , ,}´ //
/ //
0997デフォルトの名無しさん
2010/08/04(水) 11:36:460998デフォルトの名無しさん
2010/08/04(水) 11:40:050999デフォルトの名無しさん
2010/08/04(水) 12:19:101000デフォルトの名無しさん
2010/08/04(水) 12:21:1810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。