次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part133
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0548デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/14(木) 17:04:38.91ID:fPDEs5uN0 メンバの参照を返したらprivateにしている意味が完全に失われるぞ
>>547
上流が const を渡してきたら、下流は逆らえない、ってことでは?
上流が const を渡してきたら、下流は逆らえない、ってことでは?
550デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/14(木) 19:25:05.92ID:xcUKDly80 自作クラスのメンバ関数にconst全く付けてないタコが聞きかじりで中途半端に付け始めて
「メソッド呼べない!ムキー!このconstってやつ使えねー」ってパターンが大半だと思ってる
「メソッド呼べない!ムキー!このconstってやつ使えねー」ってパターンが大半だと思ってる
551デフォルトの名無しさん (ワッチョイ 1f7f-mLIQ)
2017/12/14(木) 19:27:31.22ID:gH71C6kZ0 const地獄になるってことはそのコードが間違ってるって事だからな
全部直せ
全部直せ
552デフォルトの名無しさん (スップ Sd52-JSy5)
2017/12/14(木) 20:46:09.64ID:j4kcZFN2d >>547
本気で言ってるなら、それは経験が足りない
本気で言ってるなら、それは経験が足りない
553デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/14(木) 20:54:50.42ID:5ihghoP20 副作用の少ないきれいな設計ならconstだらけになるはずだが
554デフォルトの名無しさん (ワッチョイ 1681-J6jR)
2017/12/14(木) 20:59:02.63ID:tSRk6cie0 >>553
これ
これ
555デフォルトの名無しさん (ワッチョイ dfb3-hRZ1)
2017/12/14(木) 21:01:34.68ID:jk+byjKr0 No.1
1 2 3 4 5
2 3 4 5 6
No.2
1 2 3 4 5
2 2 2 2 2
3 3 3 3 3
No.3
3 4 5 6 7
:
:
No.n
というtxtファイルがあり。No.〇の次の行に整数が記入されている(何行あるかわからない)
整数の左からx1[ i ][ k ]、y1[ i ][ k ]、x2[ i ][ k ]、y2[ i ][ k ]、A[ i ][ k ]の配列にそれぞれ書き込み
もし次の行整数があればi+1をしまたそれぞれの配列に整数を書き込む
もし次の行に整数がなければ(No.の行)k+1を次の行にいき整数をそれぞれの配列に書き込む。
これをNo.nまで繰り返す。
このプログラムをfopenを使ってプログラムどなたかつくってくれませんかー?
1 2 3 4 5
2 3 4 5 6
No.2
1 2 3 4 5
2 2 2 2 2
3 3 3 3 3
No.3
3 4 5 6 7
:
:
No.n
というtxtファイルがあり。No.〇の次の行に整数が記入されている(何行あるかわからない)
整数の左からx1[ i ][ k ]、y1[ i ][ k ]、x2[ i ][ k ]、y2[ i ][ k ]、A[ i ][ k ]の配列にそれぞれ書き込み
もし次の行整数があればi+1をしまたそれぞれの配列に整数を書き込む
もし次の行に整数がなければ(No.の行)k+1を次の行にいき整数をそれぞれの配列に書き込む。
これをNo.nまで繰り返す。
このプログラムをfopenを使ってプログラムどなたかつくってくれませんかー?
556デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/14(木) 21:33:16.59ID:x8KqPZST0 宿題くらい自力でこなせ脳筋
557デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/14(木) 21:45:38.41ID:NkgoJhJp0 ヒント。
いずあるふぁっていう関数どっかにあるから、先頭にアルファベットがあったらスキップや。
それと宿題スレって落ちたの?
いずあるふぁっていう関数どっかにあるから、先頭にアルファベットがあったらスキップや。
それと宿題スレって落ちたの?
559デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/15(金) 00:18:39.45ID:sms7d93l0 const指定って下流が対応してないのに上流からやり始めるのは愚だよね
560デフォルトの名無しさん (ワッチョイ 92a6-ak+6)
2017/12/15(金) 09:14:14.38ID:2/eH7rfa0 >>559
どういう意味?
どういう意味?
561デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 11:53:03.91ID:H37RU5hVM プロパティよりも、deleteするとコンパイルエラーになるポインタが欲しい。
562デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/15(金) 11:55:37.18ID:GBd6F7vt0563デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/15(金) 12:49:17.55ID:kmVVqq510 >>561
あるじゃん
あるじゃん
564デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 15:39:48.05ID:H37RU5hVM >>562
int*に代入できたっけ?
int*に代入できたっけ?
565デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/15(金) 16:14:46.51ID:GBd6F7vt0 >>564
後出しはきたねえよ
後出しはきたねえよ
566デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 18:44:29.20ID:H37RU5hVM スマポも「ポインタ」とは言うけどさぁ
deleteの文脈で言っているんだから、オブジェクトは想定外だわ。
deleteの文脈で言っているんだから、オブジェクトは想定外だわ。
567デフォルトの名無しさん (ワンミングク MM42-B5ak)
2017/12/15(金) 18:52:20.56ID:6JtV0wHMM そんなもん何の役にたつのか解らんわ
568デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 06:47:52.76ID:7q5uIVqU0 所有権のないスマポ(?)ならstd::observer_ptrがもうすぐ入るから待っとけ
569デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 06:55:04.26ID:7q5uIVqU0 ところでスマポのコンストラクタの書き方ってどっちがいいの?
class Foo
{
std::shared_ptr<Bar> bar;
Foo(): bar(new Bar(42, 100.5, "xxx")){}
Foo(): bar(std::make_shared<Bar>(42, 100.5, "xxx")){}
};
下の書き方されてるのよく見るけどこれって
「newがあるのにdeleteがない!111」って発狂するアホコードチェッカを黙らせる以外にメリットなんかあるの?
class Foo
{
std::shared_ptr<Bar> bar;
Foo(): bar(new Bar(42, 100.5, "xxx")){}
Foo(): bar(std::make_shared<Bar>(42, 100.5, "xxx")){}
};
下の書き方されてるのよく見るけどこれって
「newがあるのにdeleteがない!111」って発狂するアホコードチェッカを黙らせる以外にメリットなんかあるの?
570デフォルトの名無しさん (ワッチョイ d6fa-+wuU)
2017/12/16(土) 07:12:04.23ID:WjCT6x4J0571デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 07:21:37.50ID:7q5uIVqU0 あーなるほど
new隠しだけのための砂糖だと思ってましたありがとう
ということはunique_ptrの場合はメリットなしでいいんですかね
new隠しだけのための砂糖だと思ってましたありがとう
ということはunique_ptrの場合はメリットなしでいいんですかね
572デフォルトの名無しさん (ワッチョイ ff78-H+11)
2017/12/16(土) 07:29:56.22ID:O0/bhlaM0 俺もmake_uniqueはいらねーよなぁって思ってたけど使った方が例外安全なんだとよ
573デフォルトの名無しさん (ワッチョイ 1f7f-mLIQ)
2017/12/16(土) 09:33:48.78ID:RDTsLSUc0 むしろmake_uniqueが11に無くてキレた
574デフォルトの名無しさん (ワッチョイ a7b3-mLIQ)
2017/12/16(土) 22:08:09.44ID:d76HZF+i0 point cloud libraryというライブラリを読んでいます。
kdtreeクラスはsearchクラスをパブリック継承しており、
kdtreeクラスの冒頭で、searchクラスのデータメンバやメンバ関数の一部をusingしています。
これはどういう意味があってやっているのか教えて頂けないでしょうか。
kdtreeクラスはsearchクラスをパブリック継承しており、
kdtreeクラスの冒頭で、searchクラスのデータメンバやメンバ関数の一部をusingしています。
これはどういう意味があってやっているのか教えて頂けないでしょうか。
575デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/17(日) 10:02:55.57ID:E0u1MAW90 IO2D楽しみだなー。
ウニファイドコールシンタックス復活しないかなぁ。
ウニファイドコールシンタックス復活しないかなぁ。
576デフォルトの名無しさん (ワッチョイ ef04-RjCm)
2017/12/17(日) 18:17:59.07ID:4ntht7mR0 質問です。
#include "classB.h"
class A{
private:
B* b;
public:
void set(B* b){this->b=b;}
B* get(){return b;}
};
クラスAのメンバーにクラスBのポインタとアクセサがあります。
しかし、set()を使わずに、get()を使ってメンバーにアクセスできてしまいます。
例:a->get()=b;
ポインタではなく、複製したインスタンスを返すことも考えたのですが
クラスBのサイズが非常に大きいため、
可能であれば複製はしたくありません。
どうかご助力をお願い致します。
#include "classB.h"
class A{
private:
B* b;
public:
void set(B* b){this->b=b;}
B* get(){return b;}
};
クラスAのメンバーにクラスBのポインタとアクセサがあります。
しかし、set()を使わずに、get()を使ってメンバーにアクセスできてしまいます。
例:a->get()=b;
ポインタではなく、複製したインスタンスを返すことも考えたのですが
クラスBのサイズが非常に大きいため、
可能であれば複製はしたくありません。
どうかご助力をお願い致します。
577デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/17(日) 18:32:55.64ID:bOEVzYTT0 const B *get() const {略}
578デフォルトの名無しさん (ワッチョイ 52a2-mLIQ)
2017/12/17(日) 18:33:44.11ID:+uUy0Dc30 get()を消す
579デフォルトの名無しさん (ワッチョイ ff78-H+11)
2017/12/17(日) 18:37:56.02ID:iUXjeeD00 B* b = nullptr;
B* get(){ assert(b != nullptr); return b;}
こうでもしとけばいいよ
B* get(){ assert(b != nullptr); return b;}
こうでもしとけばいいよ
580デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/17(日) 18:39:29.53ID:UdjbeEad0581デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/17(日) 18:41:17.67ID:bOEVzYTT0 エスパーだがポインタみたいな動作させたいなら operatorー>() を定義すりゃいいけど上の説明だとなにがやりたいのか具体的にわからないね
582デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/17(日) 18:48:28.66ID:1SGX9IGl0 >>578に賛成
583デフォルトの名無しさん (ワッチョイ ef04-RjCm)
2017/12/17(日) 18:56:03.60ID:4ntht7mR0584デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/17(日) 19:23:44.84ID:KvIrn8eu0 Bがなんだかわからないけどsetがものすごくまずいように見える
585デフォルトの名無しさん (ワッチョイ a7b3-mLIQ)
2017/12/17(日) 19:40:09.05ID:S5+bbMRX0 [][] [] [][][][] [][] [] [][][][][
[ ][] [
[ ][] [
586デフォルトの名無しさん (ワッチョイ 921b-zGdT)
2017/12/17(日) 20:35:52.39ID:eYk9JmcH0 gtkmmググっても英語含めて17ページしかないんだわ(´・ω・`)
587デフォルトの名無しさん (ワッチョイ 72bd-E651)
2017/12/17(日) 20:39:57.73ID:wJJJkdkz0 オブジェクトの内部データへの変更を許すフリーパスを外に与えるようなsetterやgetterはNG、
しかしあまり杓子定規にそれを言い立てるとファイルハンドルとかもgetterで返して良いかどうかビミョーに…
ファイルはオブジェクトの内部データではないお客様という解釈で乗り切る?
しかしあまり杓子定規にそれを言い立てるとファイルハンドルとかもgetterで返して良いかどうかビミョーに…
ファイルはオブジェクトの内部データではないお客様という解釈で乗り切る?
588デフォルトの名無しさん (ワッチョイ af39-zS+j)
2017/12/17(日) 22:46:35.33ID:AbfI68c80 いいわけないだろ
教条主義にとらわれていると
そういうことがわからなくなる
教条主義にとらわれていると
そういうことがわからなくなる
589はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e6f-mLIQ)
2017/12/17(日) 23:31:57.93ID:vupC7usA0 フレンドクラスに見せるようにする方が例外扱いが明記される分だけマシ
590デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/17(日) 23:42:11.90ID:1SGX9IGl0 フレンドはカプセル化を推進する良い子
591デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/17(日) 23:55:34.47ID:E0u1MAW90 クラスオブジェクトソリッド
>>295 >>292
accelerated c++ をぼちぼちやっています。
>>295 にもバグがあり、正しくは
https://ideone.com/sK4aJ2
一行を最後まで読んでしまったのなら、即座にループを抜けないといけない
なんだか最近 while() の使い道がなくなってきたように思えるのです…いつも for(::) { break; } ばかり書くようになってしまった…
accelerated c++ をぼちぼちやっています。
>>295 にもバグがあり、正しくは
https://ideone.com/sK4aJ2
一行を最後まで読んでしまったのなら、即座にループを抜けないといけない
なんだか最近 while() の使い道がなくなってきたように思えるのです…いつも for(::) { break; } ばかり書くようになってしまった…
593デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 00:12:01.54ID:3Ix8qMew0 停止性を担保するのは良いことだと思うが。
結局無限ループからのブレークしか使ってないなら頭整理してWHILEに置き換えるようにするなぁ。
結局無限ループからのブレークしか使ってないなら頭整理してWHILEに置き換えるようにするなぁ。
>>593
停止性の確認を行った後、余計なことを一切してはいけない、という制約が加わると
途中判定の break 脱出以外に手がない、と考えています
あまり思い出したくないんですが、DOS/Windows の findfirst/findnext なんかも似た類かと
停止性の確認を行った後、余計なことを一切してはいけない、という制約が加わると
途中判定の break 脱出以外に手がない、と考えています
あまり思い出したくないんですが、DOS/Windows の findfirst/findnext なんかも似た類かと
596デフォルトの名無しさん (ワッチョイ d298-Ll2t)
2017/12/18(月) 02:19:29.29ID:+LmA4Igx0 アプリケーション上で確保されたヒープ領域を追跡したいです。
operator new/delete と allocator を弄ればできると思い調査していたころ
「プログラミング言語C++ 第4版」P997 に
「標準ライブラリのすべてのコンテナは、newによってメモリを確保して、deleteによって解放するデフォルトアロケータを(デフォルトで)もっている」
と書かれていました。つまり、new をグローバルでオーバーロードすれば追跡可能です。
実際、手元のコンパイラでは std::vector のメモリ確保と解放を追跡できました。
ここまでの内容は規格で保証されている事柄ですか?
実際のアプリケーションに組込むことを考えています。
operator new/delete と allocator を弄ればできると思い調査していたころ
「プログラミング言語C++ 第4版」P997 に
「標準ライブラリのすべてのコンテナは、newによってメモリを確保して、deleteによって解放するデフォルトアロケータを(デフォルトで)もっている」
と書かれていました。つまり、new をグローバルでオーバーロードすれば追跡可能です。
実際、手元のコンパイラでは std::vector のメモリ確保と解放を追跡できました。
ここまでの内容は規格で保証されている事柄ですか?
実際のアプリケーションに組込むことを考えています。
597デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 02:36:31.34ID:3Ix8qMew0 メモリの確保形式はさすがに実装依存でしょ。
最近リーヌスがブチ切れたらしいけど。
メモリーオーダーコンシウムとかの話は今やってるところ。
最近リーヌスがブチ切れたらしいけど。
メモリーオーダーコンシウムとかの話は今やってるところ。
598デフォルトの名無しさん (ワッチョイ b780-AB+M)
2017/12/18(月) 03:43:10.43ID:vrG0ZJDQ0599デフォルトの名無しさん (ワッチョイ 1233-4pIx)
2017/12/18(月) 07:43:59.76ID:dmyIL21e0 >>596
std::allocator<T> (The default allocator) についての [allocator.members] で規定されてる。
> Remarks: the storage is obtained by calling ::operator new, but it is unspecified when or
> how often this function is called.
標準コンテナにアロケータを指定しなければ std::allocator が使われるから、それでいける。
「実際のアプリケーション」に変なものが混ざってなければね。
std::allocator<T> (The default allocator) についての [allocator.members] で規定されてる。
> Remarks: the storage is obtained by calling ::operator new, but it is unspecified when or
> how often this function is called.
標準コンテナにアロケータを指定しなければ std::allocator が使われるから、それでいける。
「実際のアプリケーション」に変なものが混ざってなければね。
600デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 07:50:02.22ID:3Ix8qMew0 アロケータ自作してスパイアロケータとか作ればそれっぽいことはできるね。
標準コンテナに限っては。
標準コンテナに限っては。
601デフォルトの名無しさん (ドコグロ MMb3-c48R)
2017/12/18(月) 09:32:57.28ID:MJYUqHBuM >>576
ポインタを返さずに、ハンドルクラスを定義してそのオブジェクトを返す。
ポインタを返さずに、ハンドルクラスを定義してそのオブジェクトを返す。
602デフォルトの名無しさん (ブーイモ MMdb-ak+6)
2017/12/18(月) 12:58:24.39ID:D6kxD+M8M >>596
グローバルnew/deleteのオーバーロード自体は、規格で許されてるので合法。
ただ、注意深くやらないと吹っ飛ぶ。
とある処理系の標準ライブラリで、ユーザー回避不可能な不具合に当たったこともあった。
グローバルnew/deleteのオーバーロード自体は、規格で許されてるので合法。
ただ、注意深くやらないと吹っ飛ぶ。
とある処理系の標準ライブラリで、ユーザー回避不可能な不具合に当たったこともあった。
603デフォルトの名無しさん (ワッチョイ c623-w1i6)
2017/12/18(月) 22:55:31.76ID:agqFpTM+0 596です
規格での確認と該当箇所のコーディングを確認しました
ありがとうございました!
規格での確認と該当箇所のコーディングを確認しました
ありがとうございました!
604デフォルトの名無しさん (ワッチョイ af36-zS+j)
2017/12/19(火) 13:02:14.85ID:MoA6J0CR0 うむ、ご苦労。
605デフォルトの名無しさん (ワッチョイ af36-zS+j)
2017/12/20(水) 13:42:16.45ID:63AN+5MK0 sleep_untilで「何秒後」ではなく「何時に」という絶対時刻を指定する方法なんだけどさ
mktimeとfrom_time_tを使う方法しかないかね? なんかダサくてやなんだけど
mktimeとfrom_time_tを使う方法しかないかね? なんかダサくてやなんだけど
607デフォルトの名無しさん (ワッチョイ b723-54vE)
2017/12/20(水) 22:19:15.39ID:WOX+3yjn0 IDE:Visual Studio Express 2015 for Windows Desktop
浮動小数点モデル設定:Fast Math
コンパイルモード:Release
wWinMain関数内で
wchar_t str[ 16 ];
DirectX::XMMatrixOrthographicLH( 1.0f, 1.0f, 0.0f, 1.0f );
for( int i = 0;; i++ )
{
float f = i;
if( f > 0.0f ) break;
swprintf_s( str, L"%f", f );
}
と書くと、swprintf_sの結果が、期待される0.0ではなく、-0.0になります。
swprintf_sの行と上のif文の行を入れ替えると、0.0になります。
XMMatrixOrthographicLHがなかったり、Debugモードだったり、
Fast MathではなくデフォルトのPreciseだったりすると、
行の入れ替え関係なく0.0。
-0.0になるときは、何が始ま・・・起こってるんです?
浮動小数点モデル設定:Fast Math
コンパイルモード:Release
wWinMain関数内で
wchar_t str[ 16 ];
DirectX::XMMatrixOrthographicLH( 1.0f, 1.0f, 0.0f, 1.0f );
for( int i = 0;; i++ )
{
float f = i;
if( f > 0.0f ) break;
swprintf_s( str, L"%f", f );
}
と書くと、swprintf_sの結果が、期待される0.0ではなく、-0.0になります。
swprintf_sの行と上のif文の行を入れ替えると、0.0になります。
XMMatrixOrthographicLHがなかったり、Debugモードだったり、
Fast MathではなくデフォルトのPreciseだったりすると、
行の入れ替え関係なく0.0。
-0.0になるときは、何が始ま・・・起こってるんです?
609デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/20(水) 23:17:41.47ID:c/xU5Mb/0 コンパイラ固有のことなんか聞かれても誰も分からないと思うぞ
610デフォルトの名無しさん (ワッチョイ cfeb-W85D)
2017/12/21(木) 00:36:33.65ID:0IseKiC90611607 (ワッチョイ 0323-of2o)
2017/12/21(木) 01:46:36.50ID:tbJ2Dsuk0612デフォルトの名無しさん (ワッチョイ cf3f-tRgI)
2017/12/21(木) 08:39:02.54ID:ZD2kjVCM0 >>606
thx
thx
613デフォルトの名無しさん (ワッチョイ ff1b-7a68)
2017/12/21(木) 14:03:31.02ID:T6iOcz130 Gtkmmは4.0も出たのに、詳しい解説ページは2.4のママ・・・(´・ω・`)
でも俺はAPI見ながら頑張るぜ!
でも俺はAPI見ながら頑張るぜ!
614デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/21(木) 18:40:48.26ID:AI7F/oif0 今だとC++でGUIやるならQtがデファクトだと思うからそっちの方がいいんじゃない?
GTK使えと命令されてる立場ならすまん
GTK使えと命令されてる立場ならすまん
615デフォルトの名無しさん (ワッチョイ bf7e-buzn)
2017/12/21(木) 18:46:54.04ID:/u9OILN10 Qtとかでかいしライセンスは高いし謎の独自拡張を使わされるわでかなり使いにくいんだが
そのくせ特別使いやすいわけではない
そのくせ特別使いやすいわけではない
616デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/21(木) 18:49:02.51ID:AI7F/oif0 でもネットや本の情報は多そうじゃない?
まあ用途も聞かずに頭ごなしに勧めるもんではなかったなすまんかった
まあ用途も聞かずに頭ごなしに勧めるもんではなかったなすまんかった
617デフォルトの名無しさん (オッペケ Sr87-HMcx)
2017/12/21(木) 19:13:54.15ID:EBoVfuUTr 俺はwxWidgets派
618デフォルトの名無しさん (ワッチョイ ff98-v0tg)
2017/12/21(木) 20:31:35.72ID:6wHUNN6P0 gtk3一択!
619デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/22(金) 06:33:38.27ID:Mb+deFNF0 io2dまだかー。
ウニファイドコールシンタックス復活せよ〜。
ウニファイドコールシンタックス復活せよ〜。
620デフォルトの名無しさん (スプッッ Sd1f-k/7O)
2017/12/22(金) 06:57:32.16ID:v69hnew3d 基本的な動作について知りたい
msgrcvは、msgsndされた瞬間にキューがたまるから、キューが追加されたと同時に待機状態をやめて動き出す
これであってる??
あと、msgsndする先やmsgrcvで確認する先はmsggetで動的に確保された番号を知らないといけない
こうであってるかな?
msgrcvは、msgsndされた瞬間にキューがたまるから、キューが追加されたと同時に待機状態をやめて動き出す
これであってる??
あと、msgsndする先やmsgrcvで確認する先はmsggetで動的に確保された番号を知らないといけない
こうであってるかな?
621デフォルトの名無しさん (ワッチョイ a378-STQK)
2017/12/22(金) 10:05:15.55ID:H4ZK8i5q0 知らんわその関数の実装者に聞いてくれよ
622デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/22(金) 23:15:32.80ID:lfzRUYy60 システムコールの話ならLinux板にでも行け
なんかのライブラリの話なら知ったこっちゃないわ
なんかのライブラリの話なら知ったこっちゃないわ
623デフォルトの名無しさん (ブーイモ MM67-Wig1)
2017/12/23(土) 00:52:53.65ID:KIhrhFKZM >>620
TRON系のOSかな?
TRON系のOSかな?
624デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 09:50:06.14ID:DCeTZoHD0 これ実行すると0と2が表示されるので一応は問題ないですか?汚いとは思うけど。
int main(void)
{
vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
if(*ite == 1){
vec.erase(ite++);
printf("num: %d\n", *ite);
}else{
printf("num: %d\n", *ite);
++ite;
}
}
return 0;
}
int main(void)
{
vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
if(*ite == 1){
vec.erase(ite++);
printf("num: %d\n", *ite);
}else{
printf("num: %d\n", *ite);
++ite;
}
}
return 0;
}
625デフォルトの名無しさん (ワッチョイ 7f25-I6sZ)
2017/12/23(土) 10:06:15.95ID:pfQ4NECA0626デフォルトの名無しさん (ワッチョイ 7f25-I6sZ)
2017/12/23(土) 10:16:01.07ID:pfQ4NECA0 おっと、質問は問題あるかどうかだった。
結論から言うと、問題はある。
0〜2までではなく0〜3までvectorに入れてから実行すれば、
まともに動作していないのは分かるはず。
結論から言うと、問題はある。
0〜2までではなく0〜3までvectorに入れてから実行すれば、
まともに動作していないのは分かるはず。
627デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 11:00:02.97ID:DCeTZoHD0628デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 11:17:57.62ID:DCeTZoHD0 一応はこれでもいけるってことですかね?削除した時は次の要素になるという理解でいいですか?
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
if(*ite == 1){
vec.erase(ite);
}else{
++ite;
}
}
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
if(*ite == 1){
vec.erase(ite);
}else{
++ite;
}
}
629デフォルトの名無しさん (ワッチョイ c3b3-buzn)
2017/12/23(土) 11:20:42.68ID:hf8FajHG0 eraceの戻り値が次のイテレータでは
630デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 11:40:33.04ID:DCeTZoHD0 これlistとvectorでも違いました。
listだと++しないと正常に動作せず
for(list<int>::iterator ite = lst.begin(); ite != lst.end();){
lst.erase(ite++);
}
vectorだと++すると上手く動作しない
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
vec.erase(ite);
}
でもeraseの戻り値取得するのが一番いいですね。
listだと++しないと正常に動作せず
for(list<int>::iterator ite = lst.begin(); ite != lst.end();){
lst.erase(ite++);
}
vectorだと++すると上手く動作しない
for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
vec.erase(ite);
}
でもeraseの戻り値取得するのが一番いいですね。
631デフォルトの名無しさん (ワッチョイ 7f25-I6sZ)
2017/12/23(土) 11:45:41.24ID:pfQ4NECA0 std::vector::eraseのリファレンスに、こう書いてある。
https://cpprefjp.github.io/reference/vector/erase.html
削除された要素またはそれ以降の要素を指すイテレータや参照は無効になる。
これによると、vec.erase(ite); 実行後にはiteが無効になることになる。
あなたの環境だと、たまたまiteが削除した次の要素になったのかもしれないが、
それがすべての環境で成り立つ保証はない。
https://cpprefjp.github.io/reference/vector/erase.html
削除された要素またはそれ以降の要素を指すイテレータや参照は無効になる。
これによると、vec.erase(ite); 実行後にはiteが無効になることになる。
あなたの環境だと、たまたまiteが削除した次の要素になったのかもしれないが、
それがすべての環境で成り立つ保証はない。
632デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 12:08:32.26ID:DCeTZoHD0 >>631
基本的にはvectorは無効になるということですかね。
基本的にはvectorは無効になるということですかね。
633デフォルトの名無しさん (ワッチョイ f32d-KysX)
2017/12/23(土) 12:13:38.89ID:GP4QGgkb0 >>631
そのinvalidationは既に取得してるiteratorに起こるやつでは?
そのinvalidationは既に取得してるiteratorに起こるやつでは?
634デフォルトの名無しさん (ワッチョイ f378-tRgI)
2017/12/23(土) 12:16:58.11ID:82L7PCHk0 >>631
なんか変な説明だね
vector<int> vec{0, 1, 2};
auto ite = vec.begin();
++ite;
vec.erase(ite);
--ite;
cout << *ite; //これでvec[0]にアクセスできそうに聞こえる
内容的にはこういうことなのに
vec.m_head = realloc(vec.m_head, 2 * sizeof(int));
なんか変な説明だね
vector<int> vec{0, 1, 2};
auto ite = vec.begin();
++ite;
vec.erase(ite);
--ite;
cout << *ite; //これでvec[0]にアクセスできそうに聞こえる
内容的にはこういうことなのに
vec.m_head = realloc(vec.m_head, 2 * sizeof(int));
635デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 12:24:57.38ID:DCeTZoHD0 listだとこれで動くと思っていいのかな
for(list<int>::iterator ite = lst.begin(); ite != lst.end();){
lst.erase(ite++);
}
for(list<int>::iterator ite = lst.begin(); ite != lst.end();){
lst.erase(ite++);
}
636デフォルトの名無しさん (ワッチョイ cf5f-P2tI)
2017/12/23(土) 13:02:30.52ID:ncx5Vmyz0637デフォルトの名無しさん (ワントンキン MM9f-jmlw)
2017/12/23(土) 14:18:11.55ID:qpu4/MTSM そもそもこれ何してんの?
表示とともに要素を消したいならFILOなコンテナ使いなよ
std::stackみたいな
表示とともに要素を消したいならFILOなコンテナ使いなよ
std::stackみたいな
638デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 14:52:01.85ID:DCeTZoHD0639デフォルトの名無しさん (ワッチョイ cf8a-LdUP)
2017/12/23(土) 15:08:47.05ID:FpWOSq2z0 アホか
eraseの戻り値が何のためにあると思ってるんだ
eraseの戻り値が何のためにあると思ってるんだ
640デフォルトの名無しさん (ワッチョイ 339f-mAIl)
2017/12/23(土) 16:15:50.16ID:DCeTZoHD0641はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-buzn)
2017/12/23(土) 16:23:29.49ID:zbNC77HA0 vector だと要素の再配置が必要になるけど list はそうじゃないって話
642デフォルトの名無しさん (ワッチョイ ff61-Luxy)
2017/12/23(土) 17:51:30.26ID:eg9r3pR90 https://gabekore.org/vscode-c-windows
↑のサイトを見ながらCの開発環境を作っているのですがCの当たりから分からなくなってしまいました‥‥
説明のユーザー設定というものがそもそも無かったです‥‥ただの設定を開いたらこの画面になったのですが、この右に書いたのは合ってるのでしょうか‥‥?
このあとのDからはほんとによく分からなくなってしまいました‥‥この程度が出来ないなら、プログラミングなんて出来ないですよね‥‥(..;)
自分が不甲斐ないです‥‥-_-
https://i.imgur.com/VH9Yt5X.jpg
↑のサイトを見ながらCの開発環境を作っているのですがCの当たりから分からなくなってしまいました‥‥
説明のユーザー設定というものがそもそも無かったです‥‥ただの設定を開いたらこの画面になったのですが、この右に書いたのは合ってるのでしょうか‥‥?
このあとのDからはほんとによく分からなくなってしまいました‥‥この程度が出来ないなら、プログラミングなんて出来ないですよね‥‥(..;)
自分が不甲斐ないです‥‥-_-
https://i.imgur.com/VH9Yt5X.jpg
643デフォルトの名無しさん (ブーイモ MM67-P2tI)
2017/12/23(土) 18:33:23.06ID:wgR30Nr5M >>642
MacでもLinuxでも使えるVisual Studio Code Part2 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1494638671/
MacでもLinuxでも使えるVisual Studio Code Part2 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1494638671/
644デフォルトの名無しさん (ワッチョイ 6f9f-2x/m)
2017/12/23(土) 19:22:40.52ID:e2jvvoOp0 削除する場合とそうでない場合の処理を分ければOK
forでもwhileでもOK リストでもOK
std::vector<int> vec{ 0, 1, 2 };
auto it = vec.begin();
while (it != vec.end()) { if (*it == 1) it = vec.erase(it); else it++; }
for (auto n : vec) { printf("vec %d\n", n); }
std::list<int> list{ 0, 1, 2 };
auto it2 = list.begin();
while (it2 != list.end()) { if (*it2 == 1) it2 = list.erase(it2); else it2++; }
for (auto n : list) { printf("list %d\n", n); }
forでもwhileでもOK リストでもOK
std::vector<int> vec{ 0, 1, 2 };
auto it = vec.begin();
while (it != vec.end()) { if (*it == 1) it = vec.erase(it); else it++; }
for (auto n : vec) { printf("vec %d\n", n); }
std::list<int> list{ 0, 1, 2 };
auto it2 = list.begin();
while (it2 != list.end()) { if (*it2 == 1) it2 = list.erase(it2); else it2++; }
for (auto n : list) { printf("list %d\n", n); }
645デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/23(土) 20:28:00.26ID:0b4Aycyz0 >>640
根本的に勘違いしていると思うけどな。
× > eraseの戻り値使うのが一番いいのは分かったんですが
○ eraseの戻り値を使わなければならない(そうしないと意味がない)
× > 単にvectorとlistで動作が違うのが気になっただけです。
○ 戻り値を使えば同じソースコードになるように設計されている
何の為にイテレータを使うか分かっておらず、
イテレータ使えば効率が上がると勘違いしているJava鹿程度の知能なんだろ。
Linusが文句言っているのもこういう連中に対してなんだが。
根本的に勘違いしていると思うけどな。
× > eraseの戻り値使うのが一番いいのは分かったんですが
○ eraseの戻り値を使わなければならない(そうしないと意味がない)
× > 単にvectorとlistで動作が違うのが気になっただけです。
○ 戻り値を使えば同じソースコードになるように設計されている
何の為にイテレータを使うか分かっておらず、
イテレータ使えば効率が上がると勘違いしているJava鹿程度の知能なんだろ。
Linusが文句言っているのもこういう連中に対してなんだが。
646デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/23(土) 20:52:04.70ID:qGqY4/PAa javaとかc#はイテレータで列挙してる最中に要素を削除できない
例外になる
例外になる
647デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/23(土) 20:59:27.12ID:qGqY4/PAa C++ 使っててもLinusに馬鹿にされてるぞ
C原理主義者(OSつくってるひとたち)はC++を馬鹿にして
C++信者はCを馬鹿にする
滑稽だな
C原理主義者(OSつくってるひとたち)はC++を馬鹿にして
C++信者はCを馬鹿にする
滑稽だな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★2 [Hitzeschleier★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 立憲・小宮山議員、「牛乳=白い水」投稿を削除 批判殺到で「大変失礼申し上げました」 [少考さん★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 【悲報】日中戦争5割が賛成、高市キッズたち徴兵へ [834922174]
- 【悲報】日本人のTikTok収益、ガチで剥奪中wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 日清オイリオ「オリーブオイルの高騰が落ち着いたのにお前らが買わない!」 [592058334]
- 【高市遺産】 ユネスコさん。日本の「匠の技」「屋台」「和紙」などを無形文化遺産に登録 🎉🎊 [485983549]
- 「あっ、これってなくても困らないな…」って確信したもの 米以外でなんかある? [434776867]
- 【画像】整形カリカリ女が「この画像」にブチギレる理由、謎… [732289945]
