C++相談室 part145
レス数が1000を超えています。これ以上書き込みはできません。
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part144
https://mevius.5ch.net/test/read.cgi/tech/1563769115/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで ----- それ以上に集団での開発効率を重視したもの
>>898のような奇怪なものよりpImplの方がモダンC++の設計思想に合っているのは間違いない >>950
明らかに〜
説明できないときにつかう常套句だよね
少なくともc++17まではその設計ポリシーが挙げられてるよ >>952
はぁ?
pimplのどこがモダンなの?
最低限delegateを手で書かなくてもいいようにしてから言ってくれよ
スマートポインタ以下だから 設計の方針は曖昧なものではなく明文化されてるから調べてきてね ハリソン・フォード主演映画「逃亡者」(1993年)の主人公の名前は、キンブルだったね。
この映画はサントラが良い。ジェームズ・ニュートン・ハワードが音楽担当。
このサントラの「Helicopter Chase」という曲は、「タクティクスオウガ」(1995年)というテレビゲームの「VENDETTA!」という曲によく似ている。 pimpl使ったことないからスルーしてたけど
>>947=>>949
ゼロオーバーヘッドの原則は言語が掲げるもので言語利用者を縛るものじゃねーよ
実際それが便利でコストが問題にならない使い方ならどう使ってもいいだろ >>954
君もなんか勘違いしてない?
最速を目指すなんて厨二病みたいなことを挙げていたというソースは? >>959
> ゼロオーバーヘッドの原則は言語が掲げるもので言語利用者を縛るものじゃねーよ
そうだよ、だからこの手の機能は言語仕様には含まれないってことな
> 実際それが便利でコストが問題にならない使い方ならどう使ってもいいだろ
誰もお前に使うななんて言ってないから使いたいなら勝手に使ってろよw 質問です。
サンプルプログラムで割り込み処理の一文で
ISR(TIMER1_CAPT_vect) {}でサブルーチンを呼び出してたんだけど、()内の意味わかりますか? >>961
>そうだよ、だからこの手の機能は言語仕様には含まれないってことな
誰か言語仕様に含めろなんて言ってたか?
さすがに隠したいメンバをポインタ経由で隠して無駄にコストかかる言語なら俺もお断りだが
ちな俺はplmpl使いたいなどと書いてない、人の主張を勝手に捏造するな あと>>961=947と想定してもう一つ言っておくと
ポインタ変数の宣言に型(クラス)の実際の定義が必要ないのは抜け穴じゃない
必要ないから要求されないだけだ
どうもC++に対する認識がおかしい気がする
D&Eでも読んでこい >>964
> 誰か言語仕様に含めろなんて言ってたか?
誰もお前が言語仕様に含めろと言ってるなんて言ってないぞ
自意識過剰すぎだろ
> ちな俺はplmpl使いたいなどと書いてない、人の主張を勝手に捏造するな
使いたい「なら」な
C++の前に日本語やり直してこいw >>965
> あと>>961=947と想定して
バカほどこういう想定をしたがるw >>963
コンパイラが分からんけど、割り込みベクタテープルのシンボルだと思う。
タイマ1キャプチャ割り込みのハンドラを今から定義しますよ、みたいな。 サイズの違うコンテナ同士で代入を試みたらセグメンテーション違反になったんだが、リサイズしつつ代入って簡単にできないの? >>970 できるよ。
#include <vector>
#include <cassert>
int main()
{
std::vector v1{1}, v2{1,2};
v1 = v2;
assert(v1 == v2);
} >>971
普通できるのか
boostの「STLコンテナらしく振る舞う」というある多次元配列コンテナでできなかったから一般的にできないんだと思っちゃった
スマン そのためのstd::vectorのメンバ関数operator=だしな >>968
頓珍漢な想定でくだらんことしか言えないお前が出て行けよw 今事務職であいてる時間C++やってるんだけど、事務職に特化したライブラリとかってない? char str[ ];
と宣言した場合、str[0] = '\0';というNULL終端をしなければなりませんが
string str[ ];
と宣言した場合は、特にNULL終端の必要性っていうのはないのでしょうか? std::stringはstd::string::c_strメソッドを使ってアクセスするとヌル終端になることが保証されている。 char hoge[] は char の配列
別に文字列として扱う気がなければ 0 終端は必須ではない
string hoge[] は(突っ込まれるかもしれんが敢えて言うと) char[] の配列
上の char hoge[] とは別物 あと片山の答えは >>978 の回答になっていない無関係な話 (いつものことだが) 今やc_strでなくてもnull終端は保証されてるしな char str="";で多分null終端される。
stringは多分std::stringなのでそもそも文字列ではなくアドレスを扱う。
た・・・ぶ・・・ん・・・。うぼぁあああああああ。 >>978です
すみません 文字列として扱い、いきなりその変数を文字列と文字列の連携で使う場合の話です
つまり、その場合でも std::stringで宣言する場合は、"\0"で初期化する必要は無しということですね? すまん書き直し。
char str[]="";で多分初期化時にnull終端される。
「string str[];」は多分std::stringの配列なのでそもそも文字列ではなくアドレスを扱う。 >>985
説明が上手くないからもうコードで書きなよ ひょっとするとstd::string str[]じゃなくてstd::string strの間違いじゃないの? 日本語の説明よりコード片の方が多少間違っていても意図を理解できるという char[]は文字の配列=一つの文字列でstring[]は文字列の配列だからそもそも比較するのが間違ってる >>978 の char str[ ]; string str[ ]; は、どっちも
要素数不明の配列の定義でコンパイルエラーになるんと違うか?
宣言ってことは extern のつもりなんじゃろか。
>>988 の言う通り string str[ ]; は string str; かも知れんけど、
いずにせよ「質問が曖昧で答えようがない」の類かと。 アスペ多すぎ
まともな頭していればstring str;の書き間違いだってわかる >>992
本気でstring str[];だと思ってる可能性を否定しきれない
現実にその手の奴はいるし >>978です
明らかに自分が悪いです
char str[ ];
と宣言した場合、str[0] = '\0';というNULL終端をしなければなりませんが
std::string str;
と宣言した場合は、特にNULL終端の必要性っていうのはないのでしょうか?
に修正です 無い
というか元々stringはC言語由来のゼロ終端とは違い、
「サイズ持ってんだから最後を示すデータは不要」という考え方だった
C++11からは利便性のためにゼロ終端が保証されてるけどユーザーが何かする必要はない 初心者ぽいから説明が悪かったかもしれん
クラスが内部でやってくれることなので特に何かする必要はない
けど、内部データを直接書き換えたりするとおかしなことになるので注意 stringに対するstring_viewみたいにint配列等にたいするviewはありますか? '\0' と 0 とどっち使うのが良い?
NULL は論外だよな このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 54日 17時間 25分 19秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。