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

C++相談室 part38

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。

前スレ part37
http://pc5.2ch.net/test/read.cgi/tech/1098543578/

過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0153デフォルトの名無しさんNGNG
>>152
俺は 151 だが 146 ではない。

いいもへったくれもない。
単に C++ の話であり、他のどの言語の話でもない。
0154デフォルトの名無しさんNGNG
>>153は池沼。
単なるchar型へのポインタの話でさえCとC++は全く違っていて、互換性の
ある説明は出来ないと思いこんでいるバカ。
0155デフォルトの名無しさんNGNG
>>154
C++ のポインタについて聞いている人に C のポインタの答えをするトンマが泣いてるよ
0156デフォルトの名無しさんNGNG
もちろんCスレに行けば適切に答えてくれるだろうが、
正しいC++の質問をわざわざ誘導するのはどうかと思うぞ。
0157デフォルトの名無しさんNGNG
>>155
もういいよ。アホの相手をするのは疲れた。
0158デフォルトの名無しさんNGNG
>>156
そしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
お前は答えてやるつもりなんだな!?そしたらもうC専用スレの存在意義が
(100%ではないが95%ほどは)なくなるね。
0159デフォルトの名無しさんNGNG
>>155
いちいちageんなウゼえ
0160デフォルトの名無しさんNGNG
>>158
ほう、>>144 がそうだとでも言う気かよ
0161デフォルトの名無しさんNGNG
>>160
釣りなら海に行ってしてくれ。今日は天気が悪いから釣れないだろうがな
0162デフォルトの名無しさんNGNG
>>158
最初にそう断ってからから誘導すれば、荒れずにすんだと思われることが多々ある。
0163デフォルトの名無しさんNGNG
>>158
>そしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
>お前は答えてやるつもりなんだな!?
Cの質問かC++の質問か区別できない場合には、そうする。

>そしたらもうC専用スレの存在意義が
>(100%ではないが95%ほどは)なくなるね。
そうか?いずれC++を学ぶにしてもCから始める
学習者は多いと思うが。

本人がC++を学んでいるつもりであれば、C++スレに質問するだろう。
そういう場合に、内容がCと重複しているからといって、Cスレに誘導するのは、
独立した言語のスレとしてどうなんだろう、といいたい。
0164デフォルトの名無しさんNGNG
>>163
>そうか?いずれC++を学ぶにしてもCから始める
>学習者は多いと思うが。

だったらなおさらの事、CとC++で重複している質問はCスレへ誘導してやれよ。
このスレの過密化を防ぐためにわざわざ独立スレとして立ててるんだろ。
0165デフォルトの名無しさんNGNG
>>162
それぐらいは空気読んでわからんか?頭が悪いね。
0166デフォルトの名無しさんNGNG
>>144
当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
 while (1) {
  *a = *b;
  if (*a == '\0')
   return;
  a++;
  b++;
 }
}
0167デフォルトの名無しさんNGNG
>>144
void myStrcpy( char* a, char* b){ while (*a++ = *b++) ; }
↓
void myStrcpy( char* a, char* b){ do { *a = *b; a++; b++; } while (*a) ; }

このスレは池沼の住処だから、これ以上のことはCスレで訊きんしゃい。
ちなみにこのコードは空文字が与えられた時の挙動がダメダメってことと
>>144 もすぐに挙動が分からなかったように可読性も悪いコードとして
有名だから真似はせんようにね。
0168デフォルトの名無しさんNGNG
>>167
>このコードは空文字が与えられた時の挙動がダメダメ
下のほうのことだよね?
0169デフォルトの名無しさんNGNG
この++って、*aと*bが格納されてる場所のアドレスが増えてるってことだよね?
つまり、Bodyにカウントをつけたとしたら、
最初与えられたアドレスから連続していくつ、そのメモリが使われてるか分かるってこと?
0170デフォルトの名無しさんNGNG
>>169
Cスレ逝け池沼
0171デフォルトの名無しさんNGNG
>>167
アホでたー
0172デフォルトの名無しさんNGNG
>>169
そうじゃなくて*a = *b;を行っているから文字列のコピーだよ。関数名見ろ。
0173144NGNG
このスレには>>167みたいな低脳しかいないのですか?
0174デフォルトの名無しさんNGNG
167はいつもCスレを荒らしているC++厨
0175デフォルトの名無しさんNGNG
>>167
めっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
自分が池沼と言われても仕方ないようなレス書いて。
0176デフォルトの名無しさんNGNG
>175
>めっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
>自分が池沼と言われても仕方ないようなレス書いて。

池沼の住処とは自分の事を指していたのでは?
0177デフォルトの名無しさんNGNG
池沼って誰のことですか。
0178デフォルトの名無しさんNGNG
144=167のこと。
0179デフォルトの名無しさんNGNG
>このスレの過密化を防ぐためにわざわざ独立スレとして立ててるんだろ。

これは初耳
0180デフォルトの名無しさんNGNG
166さんありがとう。
当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
 while (1) {
  *a = *b;
  if (*a == '\0')
   return;
  a++;
  b++;
 }
}


if (*a == '\0')って、if (*a == '\0'||*b == '\0')じゃなくて?
0181デフォルトの名無しさんNGNG
*b++は何を表してる?って聞かれたら。。。
低脳なの、承知です。
プログラム初めてなもので・・・。
すいません。
0182デフォルトの名無しさんNGNG
池沼・・・
0183デフォルトの名無しさんNGNG
>>181
*a に *b を代入しているので、片方を0と比較すればもう片方はその必要がない。
0184デフォルトの名無しさんNGNG
質問です。
arrayに入ってる中身の順序を逆さに並び替えたいんだけど、
追加のstrageなしでってことで、XORを使おうとしてるんだけど、
XORがいまいち、よく分からないのです。
reverseOrder(array[]);の定義なのですが・・・。
0185デフォルトの名無しさんNGNG
必殺!「いまいちよく分からない」!
0186デフォルトの名無しさんNGNG
184です。解決しました。
0187デフォルトの名無しさんNGNG
お前の言いたいことがよくわからんが、逆さはとりあえずこれで出来るぞ

#include <algorithm>

const int N = 10;
int array[N];

std::reverse(&array[0],&array[N]);
0188デフォルトの名無しさんNGNG
「C++の前にCを学ぶべきか」っていうスレが必要だな
0189デフォルトの名無しさんNGNG
>>184
宿題スレで聞いたほうがいいと思う。
なぜなら質問点を明確にできていないから。

(xor について独り言)
神話に出てくる大先生の本にさえ「驚くべき」とか書いてあることを
ノーヒントで放り出す教授の意図はいったい・・・

大学の存在意義がここにあるわけだが
0190デフォルトの名無しさんNGNG
>>189
もったいつけずに言いたいことを言ってくれ。
0191デフォルトの名無しさんNGNG
どうせ「トリッキーなコード その2」の44だろ?
0192デフォルトの名無しさんNGNG
要は初心者レベルの質問は
宿題スレか初心者スレに逝けってことだ

ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/l50

>>144だの>>184だのこのスレで扱う話題じゃない。
0193伊能四郎NGNG
どうもです。
0194デフォルトの名無しさんNGNG
ズン!!
0195デフォルトの名無しさんNGNG
1 "hogehoge" "hage" 123 //int 文字列 文字列 int
2 "hige hige" 456       //int 文字列 int
3 "hegehege" "hage" 789 //int 文字列 文字列 int

こういう既存のtxtファイルがあるのですが、1や3の様にhageてる場合と
2の様にhageが無い場合があるんです。
STLでこれを、区別して読むにはどうすれば良いのでしょうか。

またhige higeの様に間にスペースが入ってしまう時にも
""内を一息に読み込む方法はあるのでしょうか。
いまは終端の"が無ければ一回読み込み、結局strcatで連結しています。
0196195NGNG
書き忘れすいません
hageは例でして、必ずhageという文字列とは限らないんです
0197デフォルトの名無しさんNGNG
>>195
それはSTLの問題ではないだろ。
読み込みパーザを書きなさい。
0198デフォルトの名無しさんNGNG
>>195
STL?std::ostream_iteratorでも使うって意味か?
std::ifstreamの間違いじゃないの?
0199195NGNG
しまったSTLは取り消します。仰るとおりstd::fstreamです。

あるいは読み込み区切り文字を変えたりして
簡単に出来ないかなと思ったのですが、やはりこの辺は細かくやらなきゃなんですか。

となるとあまり恩恵も感じられないし、、
fgetsに戻りたくなりますねぇ。レスサンクスでした。
0200デフォルトの名無しさんNGNG
std::getline()で一行をstd::stringに読み込み、それをstd::stringstreamに
ぶち込んで、1や3を前提として読んで、エラーが起きればclear()して
seekg()で先頭に戻し、2を前提で読み込む。
0201195NGNG
>>200
ありがとうございます。
そうかそこだけ別streamに取って無理矢理エラーを出させれば良いのか。
感謝です。
0202デフォルトの名無しさんNGNG
while(getline(ifs,line)){
escaped_list_separator<char> sep(''\\,' ');
tokenizer<escaped_list_separator<char> > tok(line,sep);
tokenizer<escaped_list_separator<char> >::iterator it = tok.begin();
・・・
}
0203デフォルトの名無しさんNGNG
正規表現で一番速いライブラリはどれだと思う?
0204デフォルトの名無しさんNGNG
pcre
0205デフォルトの名無しさんNGNG
boost::regex は?
0206デフォルトの名無しさんNGNG
今読んでる本に組み込み型ってあったんですけど、
これって std::complex 等標準クラスも含まれるんですか?
それとも int, char long 等だけですか?
0207デフォルトの名無しさんNGNG
C++の場合はPODと言った方がいいかもな。
0208デフォルトの名無しさんNGNG
質問ですunsorted list(ソートされないリスト)で
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃  ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??

また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
0209デフォルトの名無しさんNGNG
>>208
unsorted listでは何を指すかわからない。もっと具体的に書こう。
もし、std::listならば、>>208で正しい。
単に削除と書かず、具体的に実行した関数(erase()など)を添えよう。
0210デフォルトの名無しさんNGNG
>>208
マルチうざい。
0211デフォルトの名無しさんNGNG
>>206
std::complex<>は標準ライブラリによって定義されているので
組み込み型とは言わない。
組み込み型とは、言語によって定義されている、bool, int, char,...の事。

>>207
PODはまた別の概念。たとえば
struct point{int x,y;};
はPODだが組み込み型ではない。
0212デフォルトの名無しさんNGNG
PODって英語で言うと何の略だっけ?
いや意味は分かるんだけど、英単語がどれか迷う
ネタフリじゃないよ
0213デフォルトの名無しさんNGNG
Plain Old Dataじゃなかったか
0214デフォルトの名無しさんNGNG
>>213
おおサンクス!胸のつかえが取れたよ
よもやネタ無しでレス頂けるとは
0215デフォルトの名無しさんNGNG
上島竜平が「絶対に押すんじゃないぞ」と言っていたら、
本当に押されなかった様な哀愁を感じる
0216デフォルトの名無しさんNGNG
意地が悪いな(w
0217デフォルトの名無しさんNGNG
あるクラスのメンバ関数を(明示的に)インライン化しようと思って
定義をソースファイルからヘッダに移したのですが、
その関数の中で使われているクラスが"認識できない型"と言われ
コンパイルできなくなってしまいました。
明示的インライン化を行うときは何か特別な手続きが必要なのでしょうか?
0218デフォルトの名無しさんNGNG
age
0219デフォルトの名無しさんNGNG
>>217
include してる?
0220デフォルトの名無しさんNGNG
>>219
はい、さすがにincludeはしてます
0221デフォルトの名無しさんNGNG
>>220
あやしい…
ソースファイルでincludeしたもの全部インクルードしてもそうなる?
0222デフォルトの名無しさんNGNG
ソース見ないとワカラン
0223デフォルトの名無しさんNGNG
ソースはこんな感じです
(改行が多いといわれたのでメンバ変数を省略しました)
GetEdgeToのなかでEdgeクラスが見つからないと言われてしまいます

#include "CommonInclude.h"
#include <list>
#include "boost/numeric/ublas/vector.hpp"
#include "Edge.h"
using namespace std;
class Edge;
class Vertex
{
public:
Edge *GetEdgeTo(Vertex *vertex);
protected:
void SetPoint(vector<precision> *point) {this->point = point;}
void SetEdgeList(list<Edge> *edgeList) {this->edgeList = edgeList;}
private:
list<Edge> *edgeList;
};
inline
Edge *Vertex::GetEdgeTo(Vertex *vertex)
{
for (list<Edge>::iterator itr = edgeList->begin(); itr != edgeList->end(); itr++) {
Vertex *head = (*itr).GetHead();
if (head == vertex)
return &*itr;
}
return NULL;
}
0224デフォルトの名無しさんNGNG
>>223
Edge.hの中でEdgeクラスが定義されてるなら
class Edge; ←これを消してみれば
0225デフォルトの名無しさんNGNG
additional storage 使わないでスワップするときって、int型ならXOR使ってっていうのは、
分かったんだけど、doubleとか char の場合ってどうするか分かりますか?
0226217NGNG
>>224
Edge.hの中でVertexクラスを使っているので
それをとってしまうと循環参照がうまく解決されないのです
0227デフォルトの名無しさんNGNG
>>226
ならinlineは無理
0228217NGNG
>>227
そういうものなんですか・・・
それってどの辺を調べれば出てきますか?
0229デフォルトの名無しさんNGNG
1クラス1ファイルという馬鹿げた習慣をやめる
0230デフォルトの名無しさんNGNG
>>223
// a.h
#ifndef A_H
#define A_H
class B;
class A {B *mv; void mf();};
#include "B.h"
inline void A::mf() {B b;}
#endif
//b.h
#ifndef B_H
#define B_H
class A;
class B {A *mv; void mf();};
#include "A.h"
inline void B::mf() {A a;}
#endif
0231デフォルトの名無しさんNGNG
>>226
>Edge.hの中でVertexクラスを使っているので
どういうコード書こうとしているのかによりますけれど,普通edgeにはvertexを
指す機能だけを持たせればよいのですから,Edgeが必要とするのは
Vertex *(またはそれと同等なもの)だけで,その場合Edgeから見えるべきなのは
Vertexの前方宣言だけで良いと思うのですが.

あと根本的な話として,Boostを使っているならBoost.Graphを見てみてはどうですか?
0232デフォルトの名無しさんNGNG
UNIXじゃC++はバッチ処理にしか使われてないって本当?
0233デフォルトの名無しさんNGNG
バッチ処理に使われているのはRuby
C++なんて問題外^^;;;
0234デフォルトの名無しさんNGNG
そうですか、やっぱりRubyを勉強することにします。
ありがとうございました。
0235デフォルトの名無しさんNGNG
ちょっと待って!
ソフトウェアの規模によって違うよ。 Ruby > Perl > awk かな??
0236デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> awk >>>>>>>>>>>>>>>>>>>>> sed >>>>>Perl
0237デフォルトの名無しさんNGNG
何でそんなに比較したがるの?
0238デフォルトの名無しさんNGNG
Rubyが優れた言語であることは否定のしようがない事実。
そのことを皆が分かるまで続けます。
0239デフォルトの名無しさんNGNG
Pe = ぺ・ヨンジュン
0240デフォルトの名無しさんNGNG
>>237
どれもスクリプティング言語だから、それぞれの特徴にあった使い分けをする必要がある。
もし、それをしなかったら世の中に一つの言語しかなくなるよ。
そして、>>235は各言語に向いている開発規模を比較したものであり、言語の優劣を
比較したものではない。
0241デフォルトの名無しさんNGNG
Perlだけは許せない。
0242デフォルトの名無しさんNGNG
>>238
自己記述可能な処理系になってから言って下さい
0243デフォルトの名無しさんNGNG
最近のUNIXではPerlは入ってないよ。
既にRubyに完全に取って代わられました。
0244デフォルトの名無しさんNGNG
UNIX板にRubyのスレはありますがPerlのはありませんね。
それが全てを物語っています。
自分もPerlは削除しました。
0245デフォルトの名無しさんNGNG
Perlerはクズみたいな連中だからwebprogにでも行けばいいのに。
なに大きな顔してム板にいるのやら。
CGIと混同されるぐらいしか脳のないセンス0の糞言語が。
0246デフォルトの名無しさんNGNG
C++も糞。
Ruby作者のmatz氏のお言葉をよく聞け。

http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/ja/compar.html

C++
いろいろと有名なオブジェクト指向言語であるC++とRubyを比較すると:


C++なぞ問題外.^^;;;

http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/en/compar.html

C++
C++ is famous OOPL in many places. Now, let's compare C++ with Ruby:


Ruby is too good to compare ;-)
0247デフォルトの名無しさんNGNG
なぜLispと比較しないのか
0248デフォルトの名無しさんNGNG
Rubyの欠点は速度かな
0249デフォルトの名無しさんNGNG
Rubyの欠点は名前のせいでPerlと何か関係があるかのように信じている人が多いこと。
RubyはPerlより先に生まれ、独自に発展した言語。
Perlを参考にしたこともなければその格からして違う。
0250デフォルトの名無しさんNGNG
南京大虐殺なみの捏造ですね
0251デフォルトの名無しさんNGNG
たかが宣伝のためのリップサービスをまともに受け取っている馬鹿がいる。
RubyはPerlと全く関係がない。作者自身がそれを明言している。
0252デフォルトの名無しさんNGNG
ここが C++ スレだということを忘れそうになる惨状だな……
■ このスレッドは過去ログ倉庫に格納されています