[表示 : 全て 最新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



596 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:05:03 ]
なんとなく分ったような分らないような・・・・

同じ英数字からなる文字列比較でもプログラムによって使っている関数が違うのは
書き手(プログラマー)の意識の違いによる?
さらにワイド文字とマルチバイト文字の違いがよく分らん。。。。

出直してきます。スレ汚してすみません。

597 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:06:53 ]
すまん
*a = new double[x]
じゃなくて
a = new double*[x]


598 名前:デフォルトの名無しさん [2008/04/11(金) 14:20:42 ]
>>597
それだけじゃねーだろ。

599 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:19:15 ]
>>595
593じゃないけど、あえて言うなら「投げっぱなしの馬鹿を見てしまったこと」が
「嫌なこと」なんだろう。

600 名前:デフォルトの名無しさん [2008/04/11(金) 20:21:49 ]
deleteで落ちちゃうんだけど、原因わかりません><
このコードで落ちます・・・。

int i;
char *lpary[4];

for (i = 0; i < 4; i++){
lpary[i] = new char[256];
}

for (i = 0; i < 4; i++){
delete [] lpary[i];
}

誰か教えてください。

601 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:23:53 ]
落ちる要素は特に見当たらないが・・・。
多分、他で色々やってる部分でマズいことやってんじゃないかと。

602 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:24:46 ]

for (i = 0; i < 4; i++){
delete lpary[i]
}

delete[] lpary;

603 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:25:53 ]
>>602
おいおい^^;

604 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:26:53 ]
よく見てなかった
すまん忘れてくれ



605 名前:600 mailto:sage [2008/04/11(金) 20:29:44 ]
すいません。原因わかりました。
newとdeleteの間でやってる処理で確保したポインタに別のポインタ
渡してしまってた・・・。

まじごめん;;

606 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:30:25 ]
悪い事いわないから、vector 使え。

607 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:28:52 ]
>>596
>さらにワイド文字とマルチバイト文字の違いがよく分らん
それを調べるのが先だということに気づかないの?

608 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:30:06 ]
出直してくるって言ってるんだからほっとけよ

609 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:33:20 ]
変数をStringだとかChar型で指定することってできますか?

610 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:34:10 ]
????????

611 名前:デフォルトの名無しさん [2008/04/12(土) 00:56:30 ]
静的なメモリを確保をしたクラス内に動的に確保したクラスがあるとします
この場合exit(0)が実行された時に正しく破棄が行われますでしょうか?

612 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:59:02 ]
>>611
だいたいOSがうまく解放してくれる・・・かもね。
そんな保障はどこにもない。ちゃんと解放するかJava等に移行しましょう。

613 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:14:07 ]
ぬるぽ

614 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:15:38 ]
>>611
ライブラリの仕様によるけど、
・静的なオブジェクトのデストラクタ⇒呼ばれる
・main()から辿ってその時点までのスタック上にあるオブジェクトのデストラクタ⇒呼ばれない
つまりスタックの巻き戻しは行われないが通常のクリーンアップルーチンは呼ばれる、
が一般的なのでは。何か重要な後処理が必要なら atexit でも書いとくべきだな。



615 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:34:05 ]
atexitを使うことにします
ありがとうございます

616 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:10:32 ]
constポインタpDataのメンバstd::deque<Log> LogDataを参照するpastLog

const std::deque<Log>& pastLog = pData->LogData

を上のように作ってそのiteratorを使用したいのですが
const std::deque<M3Log>::iterator itr = pastLog.begin();
とすると

左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作; ヘルプを参照)。

と怒られます

何処をどうしていいのかわかりません、アドバイスをいただけないでしょうか

617 名前:616 mailto:sage [2008/04/12(土) 02:12:31 ]
訂正
const std::deque<M3Log>::iterator itr = pastLog.begin();

const std::deque<Log>::iterator itr = pastLog.begin();

618 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:12:40 ]
c++ は良く知らないけど、
std::deque<Log>::const_iterator itr = pastLog.begin();
じゃないの?

619 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:19:58 ]
>>618
ありがとうございます
無事コードがコンパイルを通るようになりました

const_iteratorなんてあったのか・・・

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:






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

前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