C++相談室 part153 at TECH
[2ch|▼Menu]
[前50を表示]
650:デフォルトの名無しさん
20/12/02 22:49:07.36 1SGYvOuK.net
>>638
対話モードのPythonインタプリタ上でgdbを動かせるということですか?

651:はちみつ餃子
20/12/02 22:59:56.90 wCsCmSK2.net
>>642
gdb のコマンドとして Python スクリプトが使えるという話。

652:デフォルトの名無しさん
20/12/02 23:31:37.18 3RyObk2q.net
ありがとうございました!

653:デフォルトの名無しさん
20/12/02 23:51:03.60 1SGYvOuK.net
>>643
スクリプトかぁ
対話的にやりたいですけどわかりました
ありがとうございます

654:はちみつ餃子
20/12/02 23:55:00.77 wCsCmSK2.net
>>645
対話的にもできるよ。

655:デフォルトの名無しさん
20/12/02 23:56:36.23 9+QNoiNo.net
pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ

656:デフォルトの名無しさん
20/12/03 00:11:32.72 MFKNATAf.net
>>646
ありがとうございます
なんか便利さの割にドキュメント少ない気がしますけど勉強します

657:デフォルトの名無しさん
20/12/03 06:42:09.17 w/MpdpQO.net
勉強するぞ!勉強するぞ!勉強するぞ!

C++には似合わないような気が。

658:デフォルトの名無しさん
20/12/03 11:49:30.18 4DIFtwYV.net
>>649
どういう意味だ?
1. C++erならそれくらい勉強せずに使いこなせ
2. あるがままを受け入れろ。状況を変えようとするな
3. Pythonを便利と言うな
どれ?

659:デフォルトの名無しさん
20/12/03 22:01:01.64 anyYWQoy.net
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
URLリンク(news.yahoo.co.jp)
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
URLリンク(www.businessinsider.jp)
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
URLリンク(prtimes.jp)
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
URLリンク(thebridge.jp)
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
URLリンク(project.nikkeibp.co.jp)
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
URLリンク(www.biz.ne.jp)
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
URLリンク(itpropartners.com)
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
URLリンク(www.official.or.jp)

660:デフォルトの名無しさん
20/12/04 14:40:55.75 rp0tCaVB.net
>>637
返信遅れて申し訳ありません、読んで色々試したら何となくですが理由見えてきました
一番為になった回答です…本当にありがとうございました

661:はちみつ餃子
20/12/05 00:49:53.38 rsyXPWsW.net
>>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。

662:デフォルトの名無しさん
20/12/05 08:56:44.63 F3hjf/ak.net
最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず

663:デフォルトの名無しさん
20/12/05 10:34:50.44 T+MIshnP.net
C++11以降はSTL前提で学んだほうが理解しやすい

664:デフォルトの名無しさん
20/12/05 11:14:52.77 pZ+vMW1v.net
STLとそうじゃないものの境界ってなに?

665:デフォルトの名無しさん
20/12/05 11:17:08.79 i8LYHGeY.net
そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。

666:デフォルトの名無しさん
20/12/05 11:41:24.32 f0cq7ZxN.net
C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。

667:デフォルトの名無しさん
20/12/05 11:42:36.00 f0cq7ZxN.net
STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。

668:デフォルトの名無しさん
20/12/05 11:47:59.12 f0cq7ZxN.net
目からうろこですよ。
まじ鱗。

669:デフォルトの名無しさん
20/12/05 11:53:54.60 f0cq7ZxN.net
ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。

670:デフォルトの名無しさん
20/12/05 12:09:38.13 WVFX1CVk.net
unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象

671:デフォルトの名無しさん
20/12/05 12:15:33.65 f0cq7ZxN.net
なんじゃそりゃ。

672:デフォルトの名無しさん
20/12/05 12:22:29.71 pZ+vMW1v.net
コントかよ

673:デフォルトの名無しさん
20/12/05 18:59:09.68 ynooL14Y.net
>>634
pairが初期化子リストによるコンストラクタを持たないから
c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
URLリンク(stackoverflow.com)
似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる
この箇所あたりがそれ
URLリンク(cpprefjp.github.io)
map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から
URLリンク(cpprefjp.github.io)
pairのコンストラクタにはinitializer_listは出てこない

674:デフォルトの名無しさん
20/12/05 19:10:24.03 F+hw3W9u.net
>>662
御意

675:デフォルトの名無しさん
20/12/06 03:41:22.30 hI81p89D.net
>>665
違うと思うぞ

676:デフォルトの名無しさん
20/12/06 08:19:51.08 tzyWxjgm.net
じゃあ、多数決で決めましょうや。

677:デフォルトの名無しさん
20/12/06 11:09:55.43 sjTPCZjA.net
>>667
違うんだったら何が正解だ?

678:デフォルトの名無しさん
20/12/06 13:55:38.68 hI81p89D.net
>>669
単純にemplace_backはコンストラクタに渡す引数を、push_backは生成済みの実体を受け取るという違いを
>>634が分かってないだけだろ
ついでに言えば、pairにinitializer_listを受け取るコンストラクタがあっても
emplaceは可変長テンプレート引数だから、推定に失敗してどっちにしてもエラーになる
多分。

679:デフォルトの名無しさん
20/12/08 20:44:18.72 efO/t6By.net
visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?

680:デフォルトの名無しさん
20/12/08 21:02:15.62 O6ovwbXJ.net
上の方に
#include<filesystem>
と書く

681:デフォルトの名無しさん
20/12/09 01:24:22.81 WuZTb4kZ.net
なんだそりゃあ?!

682:デフォルトの名無しさん
20/12/09 06:50:42.80 OrjjObtT.net
>>671
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>
using namespace std;
using namespace std::filesystem;
int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64

683:デフォルトの名無しさん
20/12/09 08:05:49.03 TKgHvdMy.net
>>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。
日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。

684:デフォルトの名無しさん
20/12/09 09:04:33.91 bCzZQrOf.net
脱線路運動。

685:デフォルトの名無しさん
20/12/13 02:22:39.32 1g8P/X2h.net
c++でRSSリーダー作れましゅか?

686:デフォルトの名無しさん
20/12/13 04:12:37.43 64ZS/1bZ.net
はい

687:デフォルトの名無しさん
20/12/13 11:52:25.92 83or1IML.net
RSSなんてもう誰も使ってないだろ
フィードしてるサイトなんてありゅ?

688:はちみつ餃子
20/12/13 13:34:03.99 hv54fxHN.net
ブログホスティングサイトの系統だと RSS を提供してないところとかあんまりないと思うが。

689:デフォルトの名無しさん
20/12/14 16:01:14.17 WlKHswnl.net
ていうかあちこちの言語スレで同じ事聞くのやめなさい

690:デフォルトの名無しさん
20/12/14 19:00:34.80 mjvV58cu.net
std::vectorのメンバ関数にfind()とかrfind()がないのはなんでですかね?
string::find()みたいにあってもよさそうな気がするんですが・・・

691:デフォルトの名無しさん
20/12/14 19:10:08.09 iTp2tyae.net
>>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?

692:デフォルトの名無しさん
20/12/15 09:25:27.40 rqj48Chi.net
>>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい

693:デフォルトの名無しさん
20/12/15 13:10:21.94 qBOs25Ot.net
UTF8とかだと単純に同じバイト値探せばいいわけじゃないからstringは特殊化してるんだよ

694:デフォルトの名無しさん
20/12/15 13:19:55.29 PHBBuZ6n.net
>何でもかんでもメンバに突っ込むのは悪い設計だからだ
こういう考え方いかにもCから入りましたって感じだな

695:デフォルトの名無しさん
20/12/15 13:21:51.75 gbeRTgGG.net
UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた

696:デフォルトの名無しさん
20/12/15 13:36:54.46 8mWx/Grk.net
>>687
短い系列は特に、部分列が一致したからといっても、
デコードした時にその文字かどうかは保証出来ないんじゃ?

697:デフォルトの名無しさん
20/12/15 14:01:10.21 gbeRTgGG.net
std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring

698:デフォルトの名無しさん
20/12/15 14:23:23.61 rqj48Chi.net
>>686



699:翌唐汲オていいか? それともやめとくか?



700:デフォルトの名無しさん
20/12/15 16:06:36.42 cCubMtK6.net
>>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ

701:デフォルトの名無しさん
20/12/15 16:37:15.21 pcemzeew.net
>>690
質問主ですが、是非ともkwskしてくだしあ

702:デフォルトの名無しさん
20/12/15 16:39:59.71 4y27nUGT.net
utf16はサロゲートペアちょんぎらないようにしないとな

703:デフォルトの名無しさん
20/12/15 20:33:42.18 DseQeO8W.net
合字とか異体字セレクタとかもな
文字を扱うというのは大変なんだ

704:デフォルトの名無しさん
20/12/15 21:47:00.55 F7+1e89x.net
>>688
1バイト目とそれ以降は重ならないからそういうことは起こらないはず

705:デフォルトの名無しさん
20/12/15 22:25:44.23 jc1ZwvrK.net
そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈

706:デフォルトの名無しさん
20/12/16 06:17:15.68 vxgFSXGy.net
>>696
だよね
std::stringのfindは要素を探すんじゃなくて、
要素(char)の連なり=部分文字列を探すもので
vectorとかのコンテナのそれとは異質だし蛇足とは思えない

707:デフォルトの名無しさん
20/12/16 08:58:52.32 O+yPS5En.net
>>692
了解
>>686
kwsk

708:デフォルトの名無しさん
20/12/16 09:05:13.62 9tcp04F0.net
まぁ汎用的というか、stlのアルゴリズムはほとんどが全コンテナに対して共通のコードに出来るからそうしてる(グローバルな関数にしてる)んじゃないかね
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる

709:はちみつ餃子
20/12/16 10:59:12.23 zkq7HUY5.net
アドホック多相とパラメトリック多相の違い。

710:デフォルトの名無しさん
20/12/16 11:28:07.30 Hv+rjawS.net
データ構造とアルゴリズムを合わせたものがクラスでありオブジェクト指向言語の特徴の1つと教わった
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか

711:デフォルトの名無しさん
20/12/16 11:50:27.11 uK3tjXUx.net
beginとendをペアで指定しないといけないポインタ的iteratorのせいで外部化せざるを得なかったという方が正しいんじゃないですかね

712:デフォルトの名無しさん
20/12/16 11:58:03.72 cXvwu3qd.net
↓のサイトでも外人が同じ議論してるね
誰か要約してください
URLリンク(stackoverrun.com)
Why does std::string have a find member function while std::vector and friends don't have it?
Is there anything wrong with using std::find on the string?

713:はちみつ餃子
20/12/16 13:09:55.17 zkq7HUY5.net
>>701
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。

714:デフォルトの名無しさん
20/12/16 13:27:14.81 j60AFdVm.net
C++ってカプセル化できるんでしたっけ?

715:デフォルトの名無しさん
20/12/16 13:34:22.28 KCK/bj61.net
抜け道があるかって意味なら、java等もカプセル化できないってことになるけど

716:デフォルトの名無しさん
20/12/16 13:45:31.91 O+yPS5En.net
>>701
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ
C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある

717:デフォルトの名無しさん
20/12/16 13:50:56.36 j60AFdVm.net
>>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ

718:デフォルトの名無しさん
20/12/16 13:54:21.41 vzlQaAwm.net
>>708
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?

719:デフォルトの名無しさん
20/12/16 13:55:52.62 KCK/bj61.net
なる。
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな

720:デフォルトの名無しさん
20/12/16 14:40:21.32 O+yPS5En.net
> 内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないと
これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん

721:はちみつ餃子
20/12/16 15:35:04.62 zkq7HUY5.net
現実的な部分では運用でなんとかしてる部分はあるのも確かだが、
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。

722:デフォルトの名無しさん
20/12/16 16:36:11.97 uK3tjXUx.net
>>708
それってモジュール使えば解決できる問題じゃないんでしたっけ

723:デフォルトの名無しさん
20/12/16 18:14:53.45 O+yPS5En.net
>>712
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね
問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ

724:デフォルトの名無しさん
20/12/16 18:54:24.56 G781YURu.net
意義深い議論が展開されてるな

725:デフォルトの名無しさん
20/12/16 22:51:18.04 IUrbfkPB.net
C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、
やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、

726:デフォルトの名無しさん
20/12/16 22:58:46.39 IUrbfkPB.net
きちんとオブジェクト指向するんなら継承は全部virtualであるべきや
といってもC++だけにあてはまる批判ではないが
Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG

727:デフォルトの名無しさん
20/12/16 23:05:40.32 L6k9APCP.net
不毛な宗教戦争よ

728:デフォルトの名無しさん
20/12/16 23:25:11.55 2c+prgNQ.net
クラスベースオブジェクト指向はすべて似非オブジェクト指向
アランケイ「C++のオブジェクト指向?知らない子ですね…」

729:デフォルトの名無しさん
20/12/17 01:05:17.90 X4tT/GwL.net
>>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。

730:デフォルトの名無しさん
20/12/17 01:10:53.36 YFuWJYb1.net
>>717
え、その場合仮想関数ならDerived::Fooやろ?
非仮想とか値渡しならそうだけど

731:デフォルトの名無しさん
20/12/17 07:05:17.82 iG8ucCJK.net
非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど

732:デフォルトの名無しさん
20/12/17 07:08:07.45 4VSV+Zch.net
>>717
仮想継承の話かと思ったら
そうじゃないようだな

733:デフォルトの名無しさん
20/12/17 08:15:27.96 61mx8GyZ.net
>>720
「使った機能にあったコスト」だよ。
ゼロコストはあくまで機能を使わなかった場合の話。
cの機能しか使わなかったらcのコストしかかからないのが基本方針だろ。

734:デフォルトの名無しさん
20/12/17 11:41:30.12 YFuWJYb1.net
>>722
あぁそういうことか・・
ちょっと自分の常識からかけ離れてるから理解できんかった

735:デフォルトの名無しさん
20/12/17 14:49:46.67 4VSV+Zch.net
#include <charconv>
using namespace std;
int main()
{
char str[] = "123";
double dbl;
from_chars(str, str + 3, dbl);
}
Visual Studioでは通るんだけど、GCCではダメ
どうも戻りのfrom_chars_resultがテンプレートになってて推論に失敗してるようなんだけど
規格ドラフト見てもfrom_chars_resultがテンプレートだなんてどこにも書いてない
これGCCがおかしいんだよな?
バグレポ上がってたりする?

736:デフォルトの名無しさん
20/12/17 14:50:46.30 4VSV+Zch.net
バージョン書き忘れた
Visual Studio: 19.28.29334
GCC: 10.2.0

737:デフォルトの名無しさん
20/12/17 15:56:08.03 UR7Dc4KD.net
>>726
整数型だけしかサポートしてないよ

738:デフォルトの名無しさん
20/12/17 17:33:27.07 4VSV+Zch.net
>>728
23.20.1 Header <charconv> synopsisにはfloat, double, long doubleが挙がってるんだけど・・・
ああ、GCCがってことねthx

739:デフォルトの名無しさん
20/12/17 22:56:50.01 mqVedE2Y.net
gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。

740:デフォルトの名無しさん
20/12/18 01:08:57.52 CTNkAd3G.net
>>726 「ダメ」がコンパイルエラーの意味ならエラーメッセージも挙げてよ。

741:デフォルトの名無しさん
20/12/18 01:16:51.95 UPU6Cu+L.net
ダメコンは、ダメージコントロールの略ですよ。

742:デフォルトの名無しさん
20/12/18 05:02:08.68 t+i2XnfT.net
継承使うと密結合になり変更に弱くなるし(実行時のオーバーヘッドにもなりそう)
規約で縛るというSTLの実装には好感が持てる

743:デフォルトの名無しさん
20/12/18 06:51:33.39 TZi3wQJw.net
>>731
W:\>g++ g1.cpp
g1.cpp: In function 'int main()':
g1.cpp:8:33: error: no matching function for call to 'from_chars(char [4], char*, double&)'
8 | from_chars(str, str + 3, dbl);
| ^
In file included from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: candidate: 'template<class _Tp> std::__detail::__integer_from_chars_result_type<_Tp> std::from_chars(const char*, const char*, _Tp&, int)'
595 | from_chars(const char* __first, const char* __last, _Tp& __value,
| ^~~~~~~~~~
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: template argument deduction/substitution failed:
In file included from C:/msys64/mingw32/include/c++/10.2.0/charconv:40,
from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/type_traits: In substitution of 'template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::from_chars_result]':
まだまだ延々続くけど、こんくらいでいい?

744:デフォルトの名無しさん
20/12/18 09:49:45.23 /2PllW9k.net
>>727
vsでも2017update7は同様のエラーみたいだなぁ

745:デフォルトの名無しさん
20/12/18 11:01:15.84 nIUIWdb5.net
>>733
何言ってんだ継承使いまくりだぞ

746:デフォルトの名無しさん
20/12/18 11:36:27.07 YAPYqYIf.net
>>734
ココに上げろよ
URLリンク(pastebin.com)

747:デフォルトの名無しさん
20/12/18 12:09:40.31 opBsRLFO.net
オプションは無しなんだ

748:デフォルトの名無しさん
20/12/18 13:23:30.53 2eIYLdZu.net
n要素のvectorをm要素に変えたいときって中身はどうでも良いって思ってれば
vec = vector<int>(m);

vec.assign(m);

vec.resize(m);
もコスト変わらない?

749:デフォルトの名無しさん
20/12/18 13:30:32.59 4UaQE5Dn.net
バグバグ言語ランキングで見事PHPに勝利!
URLリンク(www.techrepublic.com)

750:デフォルトの名無しさん
20/12/18 13:40:56.80 TZi3wQJw.net
>>737
何がしたいの?
元ソース貼ってるからそっちでコピペして
手元のGCCでコンパイルしてみれば再現するはずだよ

751:デフォルトの名無しさん
20/12/18 13:47:38.37 YAPYqYIf.net
>>741
邪魔くさいからココに貼るなってんだよ

752:デフォルトの名無しさん
20/12/18 14:07:04.35 TZi3wQJw.net
それは731に言ってくれ
俺は知らん

753:デフォルトの名無しさん
20/12/18 14:33:16.19 kYvjoJp5.net
>>729
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。

754:デフォルトの名無しさん
20/12/18 15:35:36.73 A9pQAhpY.net
>>729
23.20.1がHeader <charconv>のドラフトってどれだ?

755:デフォルトの名無しさん
20/12/18 15:37:59.88 TZi3wQJw.net
>>745
N4713

756:デフォルトの名無しさん
20/12/18 15:50:56.91 A9pQAhpY.net
URLリンク(cpprefjp.github.io)
URLリンク(cpprefjp.github.io)
webページ見れない理由あった?
>GCC: 8.0(整数のみ)
>Visual C++: 2017 update 7(整数のみ), update 9(full support)
俺ならこの二つ眺めて「GCCは未実装なんだなぁ」と思考停止して終わる

757:デフォルトの名無しさん
20/12/18 17:24:37.67 TZi3wQJw.net
>>747
そうか、思考停止するのか
よかったね
何だか色々と前提置いてるけど
俺は知らんよ、おまえさんの前提なんぞ
イヤミ口調のくせに脇が甘いな

758:デフォルトの名無しさん
20/12/18 17:28:32.84 Mxkr6hqK.net
priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?

759:デフォルトの名無しさん
20/12/18 18:26:15.74 Xk0olBJ3.net
template <typename T>
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;

760:デフォルトの名無しさん
20/12/18 18:41:07.57 UPU6Cu+L.net
gccの場合、未実装でもスタブだけ存在する場合があるんですよね。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。
ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。
ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。

761:デフォルトの名無しさん
20/12/18 19:45:59.90 PzyTX7K9.net
始皇帝氏

762:デフォルトの名無しさん
20/12/18 19:59:32.56 A9pQAhpY.net
>>748
ここ以外に各コンパイラでの実装具合が上手い事まとまってるサイトとかあんの?

763:デフォルトの名無しさん
20/12/18 20:30:00.87 A9pQAhpY.net
コンパイラのサポート状況 (C++17) - cppreference.com
URLリンク(ja.cppreference.com)
こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな

764:デフォルトの名無しさん
20/12/18 20:48:34.81 A9pQAhpY.net
>>746
N4713のpdfとかどこをどう漁れば出てくんだ?
全然見つからないんだけど

765:デフォルトの名無しさん
20/12/18 20:52:41.57 2rT2nv7x.net
>>755
N4713 c++で検索したらトップに出てきたぞ。
普段どんな検索しているんだよ。

766:デフォルトの名無しさん
20/12/18 20:53:49.00 UPU6Cu+L.net
URLリンク(github.com)
ここで検索すればドラフトならみられますよ。
向こうも見てるだろうけど。

767:
20/12/18 21:01:49.42 ivKQNPRV.net
>>751
関係ないけれども、gcc って今は C++ で記述されているんですよね
長い間私はそれをとても残念に思っています
オプティマイズは苦手であってもいいから C で記述されている C++ 処理系って存在するのでしょうか?

768:デフォルトの名無しさん
20/12/18 21:12:10.66 A9pQAhpY.net
>>756
>>757
URLリンク(cpprefjp.github.io)
URLリンク(ja.cppreference.com)
ここで紹介されている最終ワーキングドラフトでもない、
URLリンク(github.com)
こっちはたくさんあって何を選べばいいか分からない、
どうやってN4713のドラフトに行きついたんだ?

769:デフォルトの名無しさん
20/12/18 21:20:36.71 UPU6Cu+L.net
おーけーぐーぐるえぬよんなないちさん、と言いました。

770:デフォルトの名無しさん
20/12/18 21:37:45.97 A9pQAhpY.net
行き着いた、ってのは>>746の彼がだよ
どういう経緯で彼が「これこそが勉強すべきドラフトである」と結論したんだ?

771:デフォルトの名無しさん
20/12/18 22:07:42.21 TZi3wQJw.net
俺がN4713を見ていたことが、えらい気に入らない人がいるようだね
知らんがな
仮にwebページ見られなかったとして、どうやってN4713を落とせたのかとか
いちいち開陳せにゃならんの?

772:デフォルトの名無しさん
20/12/18 22:09:31.45 XdXLiWO3.net
>>722 >>725
差分プログラミングとかいう腐りきったプログラミングパラダイムでは
ハイディング上等なんだ、
そう思っていた時期が(ry

773:デフォルトの名無しさん
20/12/18 22:11:14.08 UPU6Cu+L.net
こちらから見えるということは、向こうからも見えてるということです。
気を付けなされよ。

774:デフォルトの名無しさん
20/12/18 23:08:30.12 A9pQAhpY.net
>>762
「ドラフトはこれを見ましょう」と大々的に紹介されてるわけでもなし、
落としたDLしたじゃなくて、どうしてそれを『選んだ』のかが不思議なんだよ
普通の経路じゃまず選べない

775:デフォルトの名無しさん
20/12/18 23:26:57.29 yxlBLqeq.net
c++ってやたうんちくばっか言う人多いよね
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある

776:デフォルトの名無しさん
20/12/18 23:29:15.18 zfI8p5qO.net
プログラマがうんちく言わないで何やるんだ?

777:デフォルトの名無しさん
20/12/18 23:48:52.19 A9pQAhpY.net
これの話の続きなのか
なら不思議は解消だ
謎は全部解けた

C++相談室 part151
スレリンク(tech板:20番)
20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
URLリンク(www.open-std.org)
あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ

778:デフォルトの名無しさん
20/12/19 00:02:31.33 yZxXMpJa.net
そんな昔のスレは関係ないのでは?

779:デフォルトの名無しさん
20/12/19 00:20:03.02 0cb9HLXb.net
>>766
こういうとこでの情報提供や議論はともかく、うんちくでマウント取りたがるのは自信の無さの裏返しだからねぇ

780:デフォルトの名無しさん
20/12/19 00:23:06.73 sq702jvD.net
うんちくがうっとおしくて、仕事なら自分が勝ってる!って思い込みたいだけなんじゃないの

781:デフォルトの名無しさん
20/12/19 00:26:01.61 yZxXMpJa.net
図星つかれたからうんちくと言ってるのでは?

782:デフォルトの名無しさん
20/12/19 00:38:15.56 x1EY5aRu.net
スカトロスレ

783:デフォルトの名無しさん
20/12/19 00:42:57.09 0cb9HLXb.net
爆釣ww

784:デフォルトの名無しさん
20/12/19 03:34:46.64 yZxXMpJa.net
この野郎。
ウンチクンめ。

785:デフォルトの名無しさん
20/12/19 06:01:48.82 u3YcA1fK.net
>>765
だから何?
俺がどのドラフトをDLするかを
いちいちあんたの承認とらにゃいかんの?
こっちゃ不思議がられても関係ないんで
いちいち申告してもらわなくていい

786:デフォルトの名無しさん
20/12/19 08:07:11.10 vl/1bKki.net
まあお茶でも飲んでカルシウム取ろう

787:デフォルトの名無しさん
20/12/19 10:17:03.91 M1Nera9i.net
お茶にはカルシウム入ってないだろほとんど

788:デフォルトの名無しさん
20/12/19 10:18:39.16 dTYT78ol.net
お茶とカルシウム入りウェハースでも食えばええやん

789:デフォルトの名無しさん
20/12/19 10:25:15.46 cik2rIYa.net
何のはなしやねん

790:デフォルトの名無しさん
20/12/19 13:23:01.76 biviwPkb.net
Ca++

791:デフォルトの名無しさん
20/12/19 13:26:14.15 biviwPkb.net
正式版は有料だがドラフトはタダで手に入るからヒジョーに得がたいが、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、

792:デフォルトの名無しさん
20/12/19 13:50:09.89 B7wez7Ce.net
よくわかりませんが、Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソというのと似た話ですか?

793:デフォルトの名無しさん
20/12/19 14:02:30.06 biviwPkb.net
Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソとなじったら
ドラフトの版が変わったらChromeの方がクソだった、みたいな

794:デフォルトの名無しさん
20/12/19 14:41:50.09 +cK8B71a.net
ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか

795:デフォルトの名無しさん
20/12/19 18:35:13.01 dM4VNuuI.net
C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?

796:デフォルトの名無しさん
20/12/19 18:41:15.86 5blMWj9s.net
>>786
まあその方がメモリ管理をミスを防ぎやすいからな
C++11以降だとまた世界が違うが

797:デフォルトの名無しさん
20/12/19 18:42:49.16 x1EY5aRu.net
どう世界が違うの?
いじわるしないで教えてよ

798:デフォルトの名無しさん
20/12/19 18:46:00.09 dM4VNuuI.net
メモリ管理の文化的な作法なのね。

799:デフォルトの名無しさん
20/12/19 18:47:02.46 5blMWj9s.net
>>788
スマートポインタが実用になったから、それでメモリ管理する方が文字通りスマートになった
だから、必要なら関数内部でメモリ確保する方法でもメモリ管理ミスが起こりにくい

800:デフォルトの名無しさん
20/12/19 19:25:11.20 p4OhEmVF.net
>>786
c++というかcの伝統だわな。
オブジェクトをヒープに置かなくていいという性能的なメリットもある。

801:デフォルトの名無しさん
20/12/19 19:59:05.03 HGWooSzm.net
Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束
vectorやstringをゴロッと返せば済む今はいい時代になったと思う

802:デフォルトの名無しさん
20/12/19 20:17:48.73 vl/1bKki.net
消費者が買い物袋用意するなんてレジ袋有料化みたいだな

803:デフォルトの名無しさん
20/12/19 20:19:43.48 yZxXMpJa.net
右辺値参照のおかげですよ。

804:デフォルトの名無しさん
20/12/19 21:06:02.20 ISt3uDJM.net
質問@:
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。
質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。

805:デフォルトの名無しさん
20/12/19 21:33:09.17 HGWooSzm.net
普通に質問しろ

806:デフォルトの名無しさん
20/12/19 22:28:27.67 yZxXMpJa.net
>>795
アロケータの内部実装がどうなっていようとも、push_back()から戻った時にはデータは追加されているので、問題ないのでは?
std::vectorは末尾に0を追加したりしません。

807:デフォルトの名無しさん
20/12/19 22:39:50.71 u3YcA1fK.net
>>782
- 最新のドラフト
+ 正式版の規格


808:票



809:デフォルトの名無しさん
20/12/19 22:59:41.56 vl/1bKki.net
確かにCだと必要メモリの問い合わせの為に二度呼び出したり面倒でしたわ…

810:デフォルトの名無しさん
20/12/19 23:18:45.05 biviwPkb.net
>>798
正式版の規格票は金かかるやんけヽ(`Д´)ノ

811:デフォルトの名無しさん
20/12/19 23:20:05.98 biviwPkb.net
>std::vectorは末尾に0を追加したりしません。
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…

812:デフォルトの名無しさん
20/12/20 00:32:15.85 zH6cQZTj.net
誰もstringの話してないと思うが

813:デフォルトの名無しさん
20/12/20 07:06:06.65 u5Xjtcw/.net
>>801
msys64/mingw64/include/c++/10.2.0/bits/basic_string.h
ここに書いてあるぞ

814:デフォルトの名無しさん
20/12/20 09:47:23.01 C7ljP8CG.net
>>799
でも「直接メモリいじってる」て感覚があって好みだったなぁ
まあ自己満足でしかないのだけれど

815:デフォルトの名無しさん
20/12/20 10:51:49.27 KSHt8d36.net
今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで

816:デフォルトの名無しさん
20/12/20 11:14:31.35 IFRd5RXQ.net
>>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。

817:デフォルトの名無しさん
20/12/20 11:16:20.77 B3eFXD


818:1J.net



819:デフォルトの名無しさん
20/12/20 11:27:39.08 KSHt8d36.net
そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど

820:デフォルトの名無しさん
20/12/20 11:52:43.58 mkiVvOjR.net
Finalizeが失敗する可能性があってエラーハンドリングしないといけない場合はあえてそうしているかもね

821:デフォルトの名無しさん
20/12/20 13:25:24.04 8M1CEzDz.net
あえてね!

822:デフォルトの名無しさん
20/12/20 13:31:53.40 1w6q/2mK.net
というかスコープ内で完結しない、グローバルな状態を持つものならそうするやろ

823:デフォルトの名無しさん
20/12/20 13:48:55.12 KSHt8d36.net
グローバルバカかな?

824:デフォルトの名無しさん
20/12/20 13:52:50.85 BqPIIXKk.net
お前が挙げてたそういうライブラリがInitialize/Finalizeの中で何やってるか考えれば自ずと答えはでるだろ

825:デフォルトの名無しさん
20/12/20 14:05:47.98 S1Ae4PMu.net
グローバルな初期化と後始末ならInitialize/Finalizeとか明示的に呼ぶ設計のが一番闇が少ない
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

289日前に更新/258 KB
担当:undef