1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.50【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1204124447/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
620 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:41:33 ] >>619 >const_iteratorなんてあったのか・・・ 超ワロタじゃないかよ
621 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 04:19:52 ] 静的確保と動的確保でプライベートメンバ関数の実行に違いが出るようなことは有るでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 09:55:51 ] 外から借りない限り終了すれば仮想プロセス空間ごと消滅するかと。
623 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:01:31 ] さあて。delete thisするんでない限りは、まー無いんでないかね。
624 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:57:40 ] #define sucide delete this
625 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:40:30 ] suicide
626 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:49:06 ] oh misu superu
627 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:50:30 ] ifの条件部で変数を宣言したい時に、boolとして評価できない型だとコンパイルエラーになりますよね std::set::const_iterator it = hoge.find(....); if (it != hoge.end()) { // ここで it を使う } のようなことをするときにifのブロック内にitのスコープを限定して if ((std::set::const_iterator it = hoge.find(...)) != hoge.end()) { のようなことをしたいんですけど無理ですか?
628 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:23:43 ] 無理
629 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:39:39 ] for ( std...it = hoge.find(...); it != hoge.end(); ) { break; } おすすめはしない
630 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:40:03 ] { std::set::const_iterator it; if(...){...} }
631 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:40:50 ] あるいは空スコープを使うとか。 { std...it = ...: if(){ } }
632 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:54:26 ] 無理やり template<typename T, template<class> class Comp> class eval_lapper { public: eval_lapper( std::pair<T, T> rhs ) : obj_(rhs.first), target_(rhs.second) {} operator bool() const { return Comp<T>()(obj_, target_); } T& obj() { return obj_; } const T& obj() const { return obj_; } private: T obj_; T target_; }; int main() { std::set<int> s; //s.insert(123); if( eval_lapper<std::set<int>::const_iterator, std::not_equal_to > it = std::make_pair( s.find(123), s.end() ) ) std::cout << *(it.obj()) << std::endl; return 0; }
633 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:57:33 ] ifの評価部分ってboolのオーバーロードがあったらちゃんとboolとして評価してくれるの?
634 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:58:44 ] してくれるが、if 文以外の所でも本当に bool 値として解釈されて欲しい場合でなければ bool のオーバーロードはすべきじゃない。
635 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:00:12 ] if 文だけでそう解釈されて欲しい場合は、 普通には使われないようなポインタへのキャスト演算子を オーバーロードするのが一般的。 メンバポインタとか。
636 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:41:51 ] >>632 面白いなやり方だな でも、lapper => wrapper じゃね
637 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:53:02 ] //test.h struct test{ int a; test(int a_) : a(a_){} }; //instance.cpp #include "test.h" test obj(1024); //program.cpp #include <iostream> #include "test.h" extern test obj; int main(){ std::cout << obj.a << std::endl; return 0; } 別々の翻訳単位に型testが定義されてるけど、同一の型として認識されるの? VC8ではコンパイル通った。
638 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:01:05 ] そりゃ通るだろ 同じヘッダインクルードしてるんだし
639 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:01:59 ] メンバ変数が一部が#ifdefあたりで囲んであると 場合によっては非常に愉快な話になるけどね
640 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:09:35 ] 愉快なというかバグな話だろ
641 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:59:36 ] 中々原因が掴めず笑うしかないとかそういうアレだろう 鼻から悪魔が出たらもっと愉快だな
642 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 22:40:49 ] String name; と String^ name; の違いはなんですか?ハンドルの意味がわかりません
643 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 22:48:53 ] >>642 C++/CLI はスレ違いなのです。 C++/CLI part3 pc11.2ch.net/test/read.cgi/tech/1206447234/
644 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 22:50:41 ] >>642 とりあえず「C++/CLI ハンドル 自動変数」でググったら説明が見つかると思う。 それで分からなかったら、もう一度おいで。 # CLIってちょい過疎気味の本スレしか無いのな
645 名前:デフォルトの名無しさん [2008/04/14(月) 01:32:44 ] コピーコンスタクタ辺りで質問です。 template <bool M> struct P { int* _p; P(int* v=NULL) : _p(v) {} P(P& v) : _p(v.release()) {} // (1) ~P() { if(M && _p) delete _p; } void reset(int* v=NULL) { if(M && _p && _p != v) delete _p; _p = v; } int* release() { int* temp = _p; _p = NULL; return temp; } }; P<true> pf(int n) { return P<true>(new int(n)); } int main() { P<true> a = pf(3); } 上記だと error: no matching function for call to ‘P<true>::P(P<true>)’ とコンパイルエラーがでます。 しかし (1) を template <bool _M> P(P<_M>& v) : _p(v.release()) {} にするとエラーにならずにコンパイルできるようになります。なぜコンパイルエラーがでなくなるのでしょうか? コンパイラは gcc version 4.0.1 (Apple Inc. build 5465) です。
646 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:43:50 ] >>645 コピーコンストラクタをテンプレート関数にして異なるテンプレート引数の型でも受け取れられるれりれるようにしたから。
647 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:46:07 ] >>645 よく分からんけど、VC8だとどちらもコンパイル通ったぞ
648 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:49:12 ] >>647 エスパーすると645は(1)をP(P& v) : _p(v.release()) {}とした上でソースコードのどこかで P<false> oldObj; P<true> newObj(oldObj); とでもしているんだろう。
649 名前:645 [2008/04/14(月) 01:52:20 ] >>646 テンプレート引数の型は書き変える前も後も true しか扱わないのに異なる型を受け取れるようにしないと いけない理由が分かりません。 途中で P<false> に変換されているのも確認できませんでした。 >>647 gcc だけで起きる問題なんでしょうか… >>647 いやしてないのです。上記のソースのみです。
650 名前:デフォルトの名無しさん [2008/04/14(月) 02:17:53 ] 質問です。4桁の乱数を取得する関数なのですが if(num[i] == num[j])以降のdowhileで必ずループに入ってしまうのですが 原因を教えていただけませんか? void random::gt(){ srand((unsigned) time(NULL)); num[0] = rand() % 10; if(num[0] <= 0){ do{ num[0] = rand() % 10; }while(num[0] <= 1); } //その他乱数取得 for(i=0;i<4;i++){ if(i <= 4){ for(j=1;j<4;j++){ num[j] = rand() % 10; if(num[i] == num[j]){ do{ num[j] = rand() % 10; system("PAUSE"); }while(num[i] != num[j]); } }; } }; }
651 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 02:47:43 ] >>649 Pは接頭語みたいなもので一部の例外を除いて単独では使えない この場合だとP<true>とP<false>が型 たとえばP<true>を定義したとき、もしP(P&)の記述が許されると コピーコンストラクタP(P<true>)か 引数付きのコピーじゃないコンストラクタP(P<false>)か曖昧になる
652 名前:>650 mailto:sage [2008/04/14(月) 03:22:48 ] 日本語でおk dowhileは必ず1回はループ内の処理を実行するが? あと、その貼ったソースはそのままか?変更して貼ってない?
653 名前:645 [2008/04/14(月) 03:33:40 ] >>651 あーなるほど。コピーコンストラクタかコンストラクタが曖昧になるんですね。 P<true> -> P<false> の変換がされると嫌で書き方に困っていたのですが P<true> -> P<true> OK P<true> -> P<false> OK P<false> -> P<false> OK P<false> -> P<true> NG の時に template <bool M> struct P { template <bool _M> P(P<_M>& v); ... }; template <> template <> P<true>::P(P<true>& v) : _p(v.release()) {} //template <> template <> P<true>::P(P<false>& v); // NG template <> template <> P<false>::P(P<false>& v) : _p(v._p) {} template <> template <> P<false>::P(P<true>& v) : _p(v._p) {} みたいにもできるってことですね!ありがとうございました。
654 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 03:33:47 ] あああ、すいません if(num[i] == num[j]){のところで 変数num[i]とnum[j]が違っていても処理をしてしまう原因 を知りたかったのです ソースは特に変えてないと思うのですが どこかおかしいでしょうか
655 名前:645 [2008/04/14(月) 03:36:18 ] 違った。P<false> -> P<true> が嫌だった。です。
656 名前:650 mailto:sage [2008/04/14(月) 03:39:19 ] またもすいません >>654 は>.650です・・・
657 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 09:29:44 ] >>650 i が 0 から 3 をとりながら動き、 そのループのなかで j が 0 から 3 をとりながら動くんですよね。 すると, i = j ならば, num[i] == num[j] となって、system("pause") がかならず 実行されることになります。 なさりたいことは、こんなのでしょうか? (確認環境 WindowsXP, 処理系 cygwin(gcc 3.4.4) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6239.txt
658 名前:650 mailto:sage [2008/04/14(月) 11:06:42 ] >>657 まさにそんな感じです ありがとうございます
659 名前:657 mailto:sage [2008/04/14(月) 11:24:42 ] >>658 バグってました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6240.txt
660 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 14:51:59 ] set<Class> a, b;とあってaからbに含まれていない要素を取り除きたいときに remove_ifなんかのアルゴリズムでスマートに書けますか?
661 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 15:06:05 ] operator^
662 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:59:15 ] >>660 #include <iostream> #include <algorithm> #include <set> #include <boost/lambda/lambda.hpp> #include <boost/lambda/bind.hpp> int main() { namespace bll=boost::lambda; std::set<int> a,b; a.insert(1); a.insert(2); a.insert(3); b.insert(2); b.insert(3); std::remove_copy_if(a.begin(), a.end(), std::ostream_iterator<int>(std::cout), bll::bind(std::find<std::set<int>::iterator, int>, b.begin(), b.end(), bll::_1 ) == b.end()); return EXIT_SUCCESS; } uu-n...
663 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:49:02 ] huninnkidearuboost::egg::lazywotukattemitayo #include <iostream> #include <algorithm> #include <set> #include <boost/lambda/lambda.hpp> #include <boost/egg/lazy.hpp> #include <boost/lambda/bind.hpp> #include <boost/assign/std/set.hpp> struct base { template< class Myself, class Arg0, class Arg1, class Arg2 > struct apply { typedef Arg0 type; }; template< class Result, class Arg0, class Arg1, class Arg2 > Result call(Arg0 begin, Arg1 end, Arg2 value) const { return std::find(begin, end, value); } }; typedef boost::egg::function<base> op; boost::egg::result_of_lazy<op>::type const find_lazy = BOOST_EGG_LAZY({}); int main() { namespace bll=boost::lambda; using boost::assign::operator+=; std::set<int> a,b; a+=1,2,3; b+=2,3; std::remove_copy_if(a.begin(), a.end(), std::ostream_iterator<int>(std::cout), find_lazy(b.begin(), b.end(), bll::_1) == b.end()); } uuu-nnn...
664 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:52:02 ] p_stade乙
665 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:01:20 ] >>660 a = bはだめなの? だめだから聞いているんだろうけど。
666 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:06:40 ] >>665 横からだけど a : 10,20,30,40 b : 20,50 この場合多分望む結果は a : 20 だろうけど、>>665 だと間違った結果を返す。
667 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:37:09 ] vectorやらlistで vector<int>の要素が 1 2 (空白) 3 4 (空白) の様に途中に空白をいれることはできるのでしょうか?
668 名前:デフォルトの名無しさん [2008/04/14(月) 18:46:45 ] VC++でPC情報を取得するPGを作成します。 プロジェクト作成は(Win32とか)どれを選ぶのが 適当でしょうか?
669 名前:デフォルトの名無しさん [2008/04/14(月) 19:40:07 ] >>668 Linux+GCCがお勧め
670 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:42:55 ] .exe が出来るならどれでもいいと思う。
671 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:02:18 ] とあるクラスに関数を一個追加しようとしたところ .hファイルに関数の本体を書き出すと正常にコンパイルが通るのに .cppファイルに書き出すと C2039 'foo' : 'hoge' のメンバではありません。 となってしまいます これはどういう事でしょうか・・・
672 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:05:04 ] ソースを見せれ
673 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:10:42 ] f´'´ ノ ヽ l 、 \! l / / // ,.ィ´ !', ト、 ヽ. ヽ . レ′, / //_,..イ// ,| l |lλぃ い. ', } / { ‐7Ζ_∠!イ 〃 /リ,}/┤!」l 小 ! ノ i| 八//'゛ -`l 〃 /ノ'´ j ! |l/| iイ/ ヽ|l//イ ャ''Tェ歹''`y゙/ 'ヾ歹¨リ`イ!ノ// まさか、ロリコンじゃないわね・・・ ) 〃A ``''''"´ '^ r; `'''"´/クK/ Y/ !トヘ. //// //// /.ィi| ;| |i( l|`Ti\,___ '⌒) ,∠lj_|iリ {い ヾLr┤:.:.:.:.`:、__,,..イ;:.::.:./勹_」! ``ァ;=<´ ̄``ヽ:ヽ;‐-/;/``Tr-.、
674 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:13:11 ] >>671 >.cppファイルに しか書いてなかったとかいうオチだったら、君が泣くまで殴るのをやめない。
675 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:14:56 ] >>672 仕事でのデータが含まれてるのでちょっとソースは公開できないですorz >>674 インテリセンスで関数宣言を確認してから中身を書いてるのでそれはないと思います
676 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:25:23 ] 問題が再現するコードを作ってそれを貼ればいいじゃん。
677 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:27:54 ] テンプレート関数だったらお前の殴る
678 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:39:03 ] hppで解決♪
679 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:58:05 ] リビルドし直したら通った・・・ これはどういう事??
680 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:22:35 ] VCではよくあること
681 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:53:28 ] そしてインテリセンスが延々と更新されないことも
682 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:58:23 ] インテリセンスが嘘つくのも。
683 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:58:43 ] >>667 vector<int>に整数以外のものは入れられません。 仮に、負値を例外として扱ってよいなら空白の代わりに-1を入れておくと言う手もなくはありませんが、 boost::optionalを使ってみてはどうでしょう。
684 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:18:55 ] メモリが断片化している場合、ポインタに+1した場合はきちんと断片先に飛んでくれるんですか? それとも型サイズ分だけ強引にアドレスが+1されるんですか?
685 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:21:43 ] 断片化? どういう状況を言ってるんだ?
686 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:22:45 ] vectorではなくdequeの実装を言っているのかもw
687 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:25:23 ] deque のことなら、イテレータに +1 したら断片化先に飛ぶけどポインタは当然無理だな。
688 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:26:51 ] >>685 1つのデータがメモリに書き込まれる時は必ず連番のアドレスに配置されるんですか?
689 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:27:37 ] >>688 少なくとも仮想アドレスは連番だが。 物理アドレスは知らんがな。
690 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:28:51 ] STLとかboostみたいので RECTとかSIZEを包んだクラスはありますか?
691 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:31:41 ] CRectならMFCにあるけどな…
692 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:31:51 ] WTLにも
693 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:32:58 ] >>689 つまり&で表示されるアドレスは仮想でWindowsが物理メモリの番地とリンクを取って隙間に埋め込んでるから考えなくていいってことですね ありがとうございました。
694 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:38:39 ] >>693 それでいいのか? 本当にそれでいいのか?w
695 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:43:16 ] C++でプロパティー的なものを表現する場合 getとsetはつけたほうがいいの?それともOR?
696 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:04:14 ] 漢は黙ってpublic:
697 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:06:53 ] それだとブレークポイントはれないじゃん・・・。
698 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:15:52 ] __declspec(property(get=getHoge, put=setHoge)) int Hoge;
699 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:43:26 ] winsockのsock関数の第一引数にAF_BTHを指定すると、AF_BTHが定義されていないとエラーがでます。 winsock2.hはインクルードしてるんですが、ほかになにかインクルードしなければいけないんでしょうか?
700 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:55:47 ] grepかけたらws2bth.hででてきたけど。
701 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:24:06 ] std::list<int> iListの参照を作りたいのですがこの場合 std::list<int>& refList = iList; で良いのでしょうか?
702 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:31:23 ] アドレスを比べてみたらいいと思うよ
703 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:39:51 ] >>702 簡単に試してみたけど 大丈夫そうな気がしました
704 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:54:33 ] C言語での構造体の初期化について質問です。 typedef struct Foo_tag{ int a; int b; int c; } Foo; というような構造体があったときに、 Foo foo = {0}; という初期化を行っているコードをたまに見かけますが、これは何を行っているのでしょうか? 一応MinGW環境で同様のコードを書いてテストしてみましたが、{0} で初期化した構造体はゼロクリアされており、 初期化しなかった構造体にはゴミが入っていました。 ということは、上記のコードは構造体をゼロクリアするという認識でいいのでしょうか? それと、標準Cの規格でこういう初期化は許されていますか? 構造体のゼロクリア処理は memset() などを利用して行っているコードが多いことを考えると、標準規格ではなさそうな 気がするんですが…。
705 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:00:36 ] メンバを途中まで初期化すると 残りは0で初期化されるってヤツだったと思う。 標準Cでどうなのかは知らん。
706 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:04:31 ] Foo foo = {1};でa=1,b=0,c=0になるのが保証されてる
707 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:12:58 ] >>705-706 ありがとうございます。途中まで初期化ということができるんですね。 それなら構造体をゼロクリアするときはこれを使うと楽かもしれないですね。 (先頭にネストした構造体があったりするとどうなるのかよくわからないので、汎用ではないのかもしれないですが)
708 名前:デフォルトの名無しさん [2008/04/15(火) 01:13:32 ] >>704 初期化時のみOK
709 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:18:46 ] memsetだとパディングも初期化できるのが利点だったかな 普通の使い方で初期化する必要があるのかどうかは知らないが
710 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:36:11 ] >>709 ものすごく行儀の悪いコーディングだけど構造体同士を memcmp で比較できる
711 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:58:11 ] >>710 あくまで「普通の使い方」の話な キャストしたりすればいろいろ問題も出てくるだろうよ
712 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:59:59 ] >>704 標準規格です。
713 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 02:01:05 ] >>704 昔のコンパイラだと 0 で初期化されません
714 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 03:28:46 ] >>660 template<typename Class> void assign_intersection(std::set<Class>& a, std::set<Class> const& b) { std::set<Class> result; std::set_intersection(a.begin(), a.end(), b.begin(), b.end() , std::inserter(result, result.end())); a.swap(result); }
715 名前:デフォルトの名無しさん [2008/04/15(火) 08:00:05 ] * ** *** **** ... みたいな感じの出力を得たいのですが、***を出力する部分は、なにか特別な書き方とかないですか? 関数を作るしかないですか?
716 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 08:06:55 ] >>715 MFCならスタティックテキストの表示を*に変えるという機能(設定)があったり。 自前でもキー入力(KeyDownとか)→別の変数に格納→その文字数だけ*を表示で簡単に出来る。
717 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 10:30:07 ] // * を n 個出力する関数 void f(int n){ for(int i = 0; i < n; i++) std::cout << '*'; std::cout << std::endl; } void g(int n){ for(int i = 0; i < n; i++) f(i); }
718 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:19:49 ] std::string s(length, '*'); std::cout << s << '\n';
719 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:41:31 ] #include <iostream> #include <iomanip> int main() { for (int i = 0; i < 10; ++i) std::cout << std::setw(i) << std::setfill('*') << "" << std::endl; } ところでC++でいいんだよね?
720 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:13:39 ] C言語ならこんなもんか void f1() { int n, i; for(n = 1; n <= 10; n ++) { for(i = 0; i < n; i ++) putchar('*'); putchar('\n'); } } void f2() { int n; for(n = 1; n <= 10; n ++) puts("**********" + 10 - n); } void f3() { int n; for(n = 1; n <= 10; n ++) printf("%.*s\n", n, "**********"); }