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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/05/14(水) 01:00:02
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.53【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1208989385/l50
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
07557502008/06/08(日) 13:02:52
>>753
>VC++ 4.0、eVC++ 4.0のサービスパッチ、PPC2003 SDK、PPC2003のエミュレータを順次インストール
はやったのですが固まってしまうので下の方に書いてあるVisual Studio 2005 Standard Editionを入れました。
libmad.vcwを開くとあるのですが見つからないので、libmad.dspをダブルクリックで開くと
「Visual C++ プロジェクト形式に変換されなければなりません」と出たので変換して開いてソリューションのビルドをすると1 失敗となってしまいます

>>754
それをやろうとしたんですが上手くいきませんでした
>相応のSDKも必要
とあるので何かインストールしなければならない物があるのかと思ったのですが見当違いでしょうか
0756デフォルトの名無しさん2008/06/08(日) 13:19:11
初心者は何故、初期状態で動かす努力をしないのだろう。
勝手に、インクルードのパス変えてみたりフォルダの構造変えてみたり・・・
聴いてみれば、あれがなかったからかえてみた。とか、パスを通すの面倒だからコピーしたとか・・・・

どんな経験者でも、他人が作ったプロジェクトのどこにノウハウが隠れているか分からないものを変更するのは細心の注意が必要なのにな。
0757デフォルトの名無しさん2008/06/08(日) 13:37:33
>>755
>ソリューションのビルドをすると1 失敗となってしまいます
ビルドエラー時にもっと詳細なメッセージが出ているはずだけど、それについて調べる努力はした?
自分にとって意味不明なメッセージはスルー?
>>753も書いているけど、失敗というだけでなくもっと詳細な情報を出さなければ回答してもらえないよ。
たぶんこのスレで聞く様な問題ではなく、visual stdioとかそっち系を探すべきだとは思うけど。
07587502008/06/08(日) 13:54:49
>>757
すみません
エラーが多いので環境自体が整ってないのかと思っていました。
長いのでttp://uproda.2ch-library.com/src/lib030582.txt
スレ違いのようでしたら移ります。
0759デフォルトの名無しさん2008/06/08(日) 14:13:53
☆2005はやめて2008入れようね☆
0760デフォルトの名無しさん2008/06/08(日) 14:18:09
>>758 をまとめてみた

d:\gsplayer\libmad\libmad.c(2) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
0761デフォルトの名無しさん2008/06/08(日) 15:42:11
char a[] ="str";
++a; /* lvalue required as increment operand */

printf("%p", &a);でアドレスは取れるのにもかかわらず、このaは左辺値じゃないんですか?
0762デフォルトの名無しさん2008/06/08(日) 15:43:04
配列型ってインクリメントしていいのか?
0763デフォルトの名無しさん2008/06/08(日) 15:49:24
>>761
lvalueでもmodifiableなものとそうでないものがある。
その例のほかに、たとえばconst修飾されたlvalueはmodifiableでない。
07647612008/06/08(日) 16:00:36
>>762
代入が不可能である時点でインクリメントが出来ないんだろうなという気はするんですが、
>lvalue required as increment operand
というような表現なんで不思議に思ったのですよ

>>763
じゃあこのエラーメッセージは罠で、
aが変更不可能な変数であることがポイントって事なんでしょうか?
0765デフォルトの名無しさん2008/06/08(日) 16:06:37
>>761
char a[] は、
char* const a だと思っておけ。
0766デフォルトの名無しさん2008/06/08(日) 16:14:06
ISO/IEC 14882 5.19-4
The pointer shall be created explicitly, using the unary & operator, or
implicitly using a non-type template parameter of pointer type, or using
an expression of array (4.2) or function (4.3) type.

このルールで右辺値じゃないけど&でポインタをとれる
0767デフォルトの名無しさん2008/06/08(日) 16:15:13
>>764
そもそもa[0]などがlvalueであって、a自体はlvalueではないだろ。
&演算子が使えるかどうかはlvalueであることとは無関係では?
0768デフォルトの名無しさん2008/06/08(日) 16:18:32
aは変更可能な左辺値って奴だろう
0769デフォルトの名無しさん2008/06/08(日) 16:18:44
>>761
lvalue の解釈を「アドレスが取れるもの」とせずに、素直に「代入式の左辺に置けるもの」と
考えておけば何も問題ないエラーメッセージじゃないか?
07707682008/06/08(日) 16:19:34
すまん逆だ
modifiableでないlvalueだ
0771デフォルトの名無しさん2008/06/08(日) 16:25:07
関数だって左辺値だしな。確か。
左辺値なら何でも代入可能とは限らない。
0772デフォルトの名無しさん2008/06/08(日) 17:58:07
#include <iostream>
#include <bitset>
#include <boost/lambda/lambda.hpp>
#include <boost/cstdint.hpp>
int main() {
double d=1.0;
std::bitset<64> b(*((boost::int64_t *) &d));
namespace bl=boost::lambda;
for (int i=0; i < b.size(); ++i)
std::cout << b[i];
}

doubleのビット表現をbitsetにぶちこむ為に一時変数使ってポインタのキャストしてるんですが
こういう面倒臭いことせずに
std::bitset<64> b( foo(1.0) );
みたいに一発でできる方法ってないですかね?
0773デフォルトの名無しさん2008/06/08(日) 18:16:38
std::bitsetって確かstd::stringを引数に持つコンストラクタあったろ。

std::string("0110110101")みたいな
0774デフォルトの名無しさん2008/06/08(日) 18:48:03
>>772
一時変数を使うほうが分かりやすいと思うぞ。
reinterpret_cast<boost::uint64_t const&>(static_cast<double const&>(1.0))
そもそも標準のbitsetでは、コンストラクタが
773も言っているstringを取るやつと、unsigned longを取るやつ、
あとコピーコンストラクタしかないからうまくいかなくても知らないぞ。
0775デフォルトの名無しさん2008/06/08(日) 19:00:00
>>772
double型を引数としてビット表現を文字列表記したstd::string型を返す関数fooを用意すれば
>std::bitset<64> b( foo(1.0) );
という風にかけるんじゃない?

以下は適当に書いてみた。テストもコンパイルもしてない。

template<typename T>
std::string foo(T d)
{
char buf[sizeof(T)];
for (int i= 0 ; i < sizeof(T) ; i++)
{
buf[i] = *(reinterpret_cast<char*>(&d))[i/8] & (0x80 >> i%8);
}
return std::string(buf);
}
0776デフォルトの名無しさん2008/06/08(日) 19:00:53
× *(reinterpret_cast<char*>(&d))
○ (reinterpret_cast<char*>(&d))
0777デフォルトの名無しさん2008/06/08(日) 20:13:53
めちゃくちゃだけど雰囲気は伝わった。
0778デフォルトの名無しさん2008/06/08(日) 20:16:04
そういやoperatorによるキャストって、C++のキャスト演算子でも使えるの?static_castあたりか
0779デフォルトの名無しさん2008/06/08(日) 20:30:49
当然使える
0780デフォルトの名無しさん2008/06/08(日) 21:35:47
しかもif()はboolを引数に取る関数です。
0781デフォルトの名無しさん2008/06/08(日) 23:46:00
じゃぁifのオーバーライドって可能なのか?
0782デフォルトの名無しさん2008/06/08(日) 23:47:52
関数じゃねえよw
0783デフォルトの名無しさん2008/06/08(日) 23:50:17
俺、catchをオーバーライドしてくるわw
0784デフォルトの名無しさん2008/06/08(日) 23:51:52
さあ while をオーバーロードする作業に戻るんだ
0785デフォルトの名無しさん2008/06/09(月) 00:02:36
部長それは昨日やりました
0786デフォルトの名無しさん2008/06/09(月) 00:10:19
#define while myfunction
0787デフォルトの名無しさん2008/06/09(月) 00:18:27
#define wife my_fiction
0788デフォルトの名無しさん2008/06/09(月) 00:19:08
#define nagato my_wife
0789デフォルトの名無しさん2008/06/09(月) 00:19:54
#error
0790デフォルトの名無しさん2008/06/09(月) 00:32:22
#ifdef nagato
#undef nagato
#endif
0791デフォルトの名無しさん2008/06/09(月) 00:56:19
return -1;
0792デフォルトの名無しさん2008/06/09(月) 01:13:11
#define private public
0793デフォルトの名無しさん2008/06/09(月) 01:14:50
なんかキモいスレが続いてるな
0794デフォルトの名無しさん2008/06/09(月) 01:42:57
明日は日曜日だからな
0795デフォルトの名無しさん2008/06/09(月) 23:34:24
すいません、質問なんですが
構造体の配列をユーザ関数で作って
それをメイン関数に返したいのですが可能ですか?
0796デフォルトの名無しさん2008/06/09(月) 23:35:40
>>795
staticな変数なら返してもおk
0797デフォルトの名無しさん2008/06/09(月) 23:36:25
配列のインスタンスを返すというのなら無理
0798デフォルトの名無しさん2008/06/09(月) 23:43:18
template<typename T, unsigned int L> struct array_wrapper{
 T data[L];
};

array_wrapper<int, 10> function(){
 array_wrapper<int, 10> result_value;
 /* ... */
 return result_value;
}
0799デフォルトの名無しさん2008/06/09(月) 23:45:29
関数の中で構造体はmalloc関数で確保してるんですけど、
どうすればメイン関数で使えるか分からないんです

返却値を構造体の配列の0番目の要素のアドレスにして、
メイン関数で使おうとしたら、0番目の要素以外には処理に使えなくて…
どうすれば、メイン関数ですべての構造体の配列が使えるようになりますか?
08007952008/06/09(月) 23:47:39
今頃ですいません
使ってるのはCです
0801デフォルトの名無しさん2008/06/09(月) 23:47:57
>メイン関数で使おうとしたら、0番目の要素以外には処理に使えなくて…
使えるよ。

どう使えないの?
0802デフォルトの名無しさん2008/06/09(月) 23:48:50
ヒント:a[n] == *(a + n)
0803デフォルトの名無しさん2008/06/09(月) 23:56:01
なんか、宿題が増えてないか?
0804デフォルトの名無しさん2008/06/09(月) 23:57:19
宿題とな?
08057952008/06/09(月) 23:57:59
for(i = 0; i < n; i++){
printf("%d n",a[i]->num);
}
見たいな処理を関数内とメイン関数内ですると
構造体を作った関数内では表示できるんですけど
メインでは0番目の要素を処理した後に処理が止まります
0806デフォルトの名無しさん2008/06/09(月) 23:58:57
a[i]はポインタじゃないから普通にドット演算子a[i].numでいい
0807デフォルトの名無しさん2008/06/10(火) 00:18:56
そりゃあC++でいいなら、配列をクラスに隠蔽させるだろw
0808デフォルトの名無しさん2008/06/10(火) 11:20:43
DWORD値をTCHARに入れるのはどうすればいい?
0809デフォルトの名無しさん2008/06/10(火) 11:46:51
DWORD foo = 1;
TCHAR bar = foo;
但し、桁あふれに注意。
0810デフォルトの名無しさん2008/06/10(火) 15:12:36
C言語で、標準出力する際のタブ(もしくはスペース)の幅を揃えることって出来ますか?
「char型データ(\t)int型データ(\t)int型データ(\t)double型データ(\n)」
この形式で、保存されている分(1件〜無制限)だけデータを表示させたいのですが、
char型データは最大で全角20文字で、この文字数によって表示が崩れてしまいます。
08118102008/06/10(火) 15:24:03
すみません、ちょっと説明が足りなかったかも。

氏名      英語  数学  平均
ほげ       20   21   20.5
名無しのごんべ 100  100  100.0

このように揃えたいのですが、現状だと

名前 英語 数学 平均
ほげ  20  21  20.5
名無しのごんべ 100 100 100.0
名無し 50  50  50.0

このように表示されてしまいます。
0812810=8112008/06/10(火) 15:24:55
ずれてたorz
0813デフォルトの名無しさん2008/06/10(火) 15:26:06
>>810
それはchar型ではなく、char配列だろ。

と言うのはさておき、printf()を使えば済む話なのか?
printf("%20.20s\t%12d\t%12d\t%24.20g\n", string, int1, int2, double1)
0814デフォルトの名無しさん2008/06/10(火) 15:49:51
>>813
そうでした、ご指摘ありがとうございます。

printf("%40.40s\t%d\t%d\t%0.1f\n",p->name,p->english,p->mathematics,p->average);
このように記述したところ、一応揃いました。
ただこの構造体は、毎回標準入力でデータを保管していくので、氏名の文字数も毎回変わります。
その都度(全データにおけるの氏名の最大文字数)に合わせて幅を変えたいのですが、可能でしょうか?
そんなのねえよ!というのであれば、ここで諦めるのですが・・・。
0815デフォルトの名無しさん2008/06/10(火) 16:05:56
>>814
printf("%*s", 40, "string")
0816デフォルトの名無しさん2008/06/10(火) 19:52:04
怖い構造体書くなぁw
0817デフォルトの名無しさん2008/06/10(火) 20:12:48
C++の頂点を極めあらゆる質問に答えて下さる皆さんに質問があります。

VS2003のVC++のGDI+なんですが、
Font font = new Font(dc, &logfont);
とするとフォントをインスタンス化できますけど、logfontのフォント名に
"@MSゴシック" のように横に傾くフォントを指定すると、うまく指定され
ないように思われます。

たとえば

LOGFONT lf1, lf2;
lf1.lfFaceName = "@MS ゴシック"
Font* font = new Font(dc, &lf1);
font->GetLogFontW(&graphics, &lf2);

というように確認してみると、lf1には確かに"@MS ゴシック"がセットされて
いるのに、lf2には"@"が外れて"MS ゴシック"がセットされてしまいます。

私は何を勘違いしてるでしょうか?
0818デフォルトの名無しさん2008/06/10(火) 20:25:33
とりあえずC++とはまったく関係ないな
08198172008/06/10(火) 20:31:54
環境依存なものでもOKじゃないんでつか…
ぷーん
それじゃ他のトコで質問してきます…
0820デフォルトの名無しさん2008/06/10(火) 21:17:12
関数ポインタの配列の様に、クラスの配列を作ってみようと思ったのですがなかなか上手く行きません。
どのように書けばいいのでしょうか

#include <iostream>
using namespace std;

class A {
public: virtual void func() { cout << "func A" << endl; }
};

class B {
public: virtual void func() { cout << "func B" << endl; }
};

enum COMMAND { FUNCA_CMD, FUNCB_CMD, EoC };
int main()
{
A a;
B b;
void (*f[EoC]) = { &a, &b };
//(*f[FUNCA_CMD])->func(); エラー
return 0;
}
0821デフォルトの名無しさん2008/06/10(火) 21:46:35
共通の基底クラスが必要(ほかにも方法がないわけではないが)。
class Base {
public:
  virutal void func() = 0;
}
class A : public Base {
public:
  virtual void func() { cout << "func A" << endl; }
};
class B : public Base {
public:
  virtual void func() { cout << "func B" << endl; }
};
int main()
{
A a;
B b;
Base* f[2] = {&a, &b};
f[0].func();
f[1].func();
}
0822デフォルトの名無しさん2008/06/10(火) 21:53:00
ありがとうございます。
次は示して頂いた物をテンプレートを使って再現できないか弄ってみます。
0823デフォルトの名無しさん2008/06/10(火) 22:01:45
どこをテンプレート化するか興味があるので、出来たら成果を見せてくれないか。
0824デフォルトの名無しさん2008/06/10(火) 22:28:36
あ、他にも方法があると聞いてテンプレートで出来るのかと思っただけです。
template < class _T >
sub( _T & t )
{
A aa;
B bb;
t F[2] = {&aa, &bb}; // error
}
int main()
{
A a;
sub ( a )
}
なんだか二度手間っぽくて面倒だし、型もBはAに出来ないと言われちゃいましたw
0825デフォルトの名無しさん2008/06/10(火) 22:35:02
t F[2]はおかしいだろ
0826デフォルトの名無しさん2008/06/10(火) 22:36:55
まぁ、一つずつ知識を深めていけば良いと思うよ。
0827デフォルトの名無しさん2008/06/10(火) 23:02:03
深みにはまると大変なのでテンプレートはほどほどに。
0828デフォルトの名無しさん2008/06/11(水) 01:37:31
テンプレートクラスのプライベートなメンバを <<演算子 で出力可能にするため↓

#include <iostream>

template < class T >
class test
{
friend std::ostream& operator<< ( std::ostream& os, test< T > t );
public:
void set( T val ) { x = val; }
private:
T x;
};

template < class T >
std::ostream& operator<< ( std::ostream& os, test< T > t )
{
os << t.x;
return os;
}

↑のようにfriend宣言したとき、

int main()
{
test< int > t;
t.set( 5 );
cout << t << endl;
}

とするとエラーが出るのですがなぜでしょう・・・。orz
テンプレートクラスでなければ問題なく動くのですが・・・。
0829デフォルトの名無しさん2008/06/11(水) 02:01:02
多分

template < class T >
class test
{
friend template< class U > std::ostream& operator<< ( std::ostream& os, test< U > t );
public:
void set( T val ) { x = val; }
private:
T x;
};

本当は知らない。
0830デフォルトの名無しさん2008/06/11(水) 02:02:03
>>828
エラーメッセージぐらい貼ろうぜ。

どうせ friend の <> なんだろうけど。
0831デフォルトの名無しさん2008/06/11(水) 02:08:06
初心者で、且つ馬鹿な人にとっては、
エラーメッセージは「エラー」という意味しか持たないものだから、
どういうエラーが出たかを書くという行為にまったく意味を見出せないんだろうね。

いつか胃ガンにでもなった時、「病気である」とだけ解釈してどういう病気かまったく興味を持たず、
呑気に胃薬飲み続けて死ねばいいと思うよ。
0832デフォルトの名無しさん2008/06/11(水) 04:30:56
エラーはコンパイル時エラーではなく
実行時クラッシュです・・・
0833デフォルトの名無しさん2008/06/11(水) 04:31:19
追記すると、つまりエラーはありません。
コンパイルは通るのです。
0834デフォルトの名無しさん2008/06/11(水) 04:59:21
コンパイラは何よ?
テンプレート周りにバグ抱えてる処理系はまだまだ多いぞ
0835デフォルトの名無しさん2008/06/11(水) 05:09:42
デバッグの勉強をする段階に来たって事じゃないの。
0836デフォルトの名無しさん2008/06/11(水) 07:40:39
>>832-833
実行時クラッシュでもエラーメッセージは出てるだろ?
そうじゃなけりゃ何を見て「実行時クラッシュ」だと思ったのさ?
0837デフォルトの名無しさん2008/06/11(水) 08:48:19
あのコードってコンパイル通る方がおかしくね?
どうせ答えは>>830だろうけど。
0838デフォルトの名無しさん2008/06/11(水) 17:11:00
>>829
VC9だけど通らない

Temaplate1.obj : error LNK2019: 未解決の外部シンボル "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class test<int>)"
(??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@V?$test@H@@@Z) が関数 _main で参照されました。
C:\Documents and Settings\*****\My Documents\Visual Studio 2008\Projects\Learn1\Debug\Temaplate1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
0839デフォルトの名無しさん2008/06/11(水) 17:12:52
template <class T>
class test {
 template <class U>
 friend std::ostream& operator<<(std::ostream& os, test<U> t);
public:
 void set(T val ){ x = val; }
private:
 T x;
};

これなら通るし正常に動く
0840デフォルトの名無しさん2008/06/11(水) 18:19:36
クラス型のvectorからfindしたい場合で上手くいかないケースがあります。
class Hoge{
 int nhoge;
public:
 operator==(Hoge hoge){
  if(this->nhoge == hoge.nhoge){ return true;
  }else{ return false; }
 }
 hoge(int nhoge){ this->nhoge = nhoge; }
}

class Hogehoge{
 std::vector<Hoge> vHoge;
public:
 std::vector<Hoge> getVhoge(){return vhoge;}
 void push_back(Hoge hoge){vHoge.push_back(hoge);}
}
main関数以下次レス。
08418402008/06/11(水) 18:20:13
>>840の続きです。

int main(){
 Hoge hoge1(1), hoge2(2), hoge3(3), hoge4(4);

 Hogehoge hogehoge;
 hogehoge.push_back(hoge1);
 hogehoge.push_back(hoge2);
 hogehoge.push_back(hoge3);

 std::vector<Hoge>::iterator itrHoge;
 itrHoge = std::find(hogehoge.getVhoge().begin(), <-ここがおかしい
 hogehoge.getVhoge().end(),hoge2);
 hogehoge.insert(itrHoge,hoge4);
 return 0;
}
とかいう感じでやりたいんですが、findのところで上手くイテレータを返してくれません。
hogehoge.getVhoge()を一時変数std::vector<hoge> tmpVhogeなどに格納してから
std::find(tmpVhoge.begin(),tmpVhoge.end(),hoge2)
などとやれば動くのですが、一時変数ではなく実体を直接いじりたいのでこれだと上手くないです。
原因がおわかりになるでしょうか?また、解決策はありますでしょうか。
コンパイラはcygwinのg++です。よろしくお願いします。
0842デフォルトの名無しさん2008/06/11(水) 18:24:35
>>840
getVhogeがvHoge自身ではなくvHogeのコピーを返してるから
実体を直接いじりたいなら
std::vector<Hoge> &getVhoge(){return vhoge;}
08438402008/06/11(水) 18:43:31
>>842
それでしたorz
とても助かりました。ありがとうございます。
Effective C++にも似たようなことが書いてあったので読んで修行します。
0844デフォルトの名無しさん2008/06/11(水) 20:03:13
C++覚えたての初心者です。

ベンチマークソフトと言ったら大袈裟ですが
HDDの単純な読み書き性能テストを行える
ソフトを作ろうかと思ってます。

単純にファイルの読み書きを100回位やった
ラップタイムを計測しようと思っています。

ベンチマークソフトのHDD性能計測ってなんか
凄いロジックとか使ってるんでしょうか?
C++じゃダメで何か他の言語じゃないと
いけないとかあるんでしょうか?

アドバイスをお願いします。
0845デフォルトの名無しさん2008/06/11(水) 20:34:25
だいたいそういうベンチは、OSのキャッシュにやられて、
メモリ/CPUの速度を測るオチになる
0846デフォルトの名無しさん2008/06/11(水) 20:52:02
OSのAPIを叩いてCPUのキャッシュサイズを評価してスコアを出す≒HDDのベンチマークソフト
0847デフォルトの名無しさん2008/06/11(水) 21:55:06
vectorを指すイテレータを使ってinsertしたとき、
挿入が終わったあとにイテレータが指している要素が
場合によって変わってしまう現象が起こります。

具体的には
vector:12345 iterator:3 vector.insert(iterator,6)
をやったときに
vector:126345 iterator:6
となる場合と
vector:126345 iterator:3
となる場合があります。
ちなみに前者は大きめのコードを書いてcygwin g++でコンパイル、
後者は検証用に仮想マシンのvine Linux上で書いてg++でコンパイルしてます。
原因等わかりますでしょうか。
0848デフォルトの名無しさん2008/06/11(水) 21:58:56
>>847
変わるのは仕様
メモリ確保しなおすからアドレスが変わるの

イテレータセットしなおすかlist使うとかしてください
08498482008/06/11(水) 21:59:43
すいません見なかったことにしてください
08508472008/06/11(水) 22:05:19
すんません書き方が分かりづらかったです。
イテレータの位置が変わるのはいいのですが、
・insertした要素を指すように変わる
・insert前に指していた要素を指すように変わる
場合が発生して、どちらかに統一されていないので困るという話です。
insert後のイテレータの位置は保障されないってだけの気もしてきました。
だとしたらなんて不便なんだvector…
0851デフォルトの名無しさん2008/06/11(水) 22:06:34
google: iterator 無効化
0852デフォルトの名無しさん2008/06/11(水) 22:10:53
>>850
単独ならinsertの戻り値
08538472008/06/11(水) 22:11:03
>>851
orz
ありがとうございます。

ランダムアクセスイテレータを前提にしたコードなので今更listにするわけにもいかず…。
いちいちinsertする度にfindするしかなさそうですね。遅くなりそうだ…。
08548472008/06/11(水) 22:15:22
>>852
それだ(;´Д`)上手く行きました!どうもありがとうございます!
0855デフォルトの名無しさん2008/06/11(水) 22:38:55
struct na *ni();

って関数があったとき、

void mein() {
  struct na = *ni();
}

って呼び方あってる?
■ このスレッドは過去ログ倉庫に格納されています