[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/31 01:11 / Filesize : 246 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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



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, "**********");
}

721 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:27:56 ]
printfの書式でもっと簡単にできなかったっけ?
イメージ>>720のf3()が近いんだけど・・・使う機会が少ないとすぐにわすれちゃうな・・・



722 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:38:10 ]
>puts("**********" + 10 - n);

このやり方はじめて見た。目から鱗やわ

723 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:42:59 ]
>>722
その鱗はつけておいた方がいいw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef