0からの、超初心者C++相談室
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2018/11/12(月) 14:55:13.35ID:Tf74ZWQr 何にも知らない0からの出発、超初心者のためのC++相談室
819デフォルトの名無しさん
2024/03/23(土) 12:54:13.64ID:aQWBK6SI >>815
>std::remove()ってファイルを消去する関数なんですね
std::remove()ってSTLのstd::removeじゃなく?
ちゃんとコンテナの要素をre-moveしてると思うが?
>std::remove()ってファイルを消去する関数なんですね
std::remove()ってSTLのstd::removeじゃなく?
ちゃんとコンテナの要素をre-moveしてると思うが?
820デフォルトの名無しさん
2024/03/23(土) 13:38:01.48ID:qgcdIGgP821デフォルトの名無しさん
2024/03/23(土) 13:40:27.68ID:qgcdIGgP ああ
<cstdio>に
int remove( const char* pathname );
ってのがあるのか
https://en.cppreference.com/w/cpp/io/c/remove
<cstdio>に
int remove( const char* pathname );
ってのがあるのか
https://en.cppreference.com/w/cpp/io/c/remove
822デフォルトの名無しさん
2024/03/24(日) 05:14:16.83ID:DBUI72Gl823デフォルトの名無しさん
2024/03/24(日) 09:50:29.58ID:FsPOi81N cstdio のは std:: 名前空間じゃないよね.
::remove だと思うけど
::remove だと思うけど
824はちみつ餃子 ◆8X2XSCHEME
2024/03/24(日) 12:13:25.60ID:iaJ2USO3 >>823
cstdio にある関数は std 名前空間にある。
ただしグローバル名前空間「にも」あって良い。 (無くても良い。)
stdio.h の場合はグローバル名前空間で宣言されるが std 「にも」あってよい。 (無くても良い。)
cstdio にある関数は std 名前空間にある。
ただしグローバル名前空間「にも」あって良い。 (無くても良い。)
stdio.h の場合はグローバル名前空間で宣言されるが std 「にも」あってよい。 (無くても良い。)
825デフォルトの名無しさん
2024/04/14(日) 11:55:59.92ID:Rac57Bvn ヒエッ……、、、ぎ、玉虫色……
826デフォルトの名無しさん
2024/04/20(土) 14:55:18.13ID:nh5GJjX6 言語そのものではないのですが、コマンドラインのデバッガやIDEでSTLのコンテナの内容を
易しく表示してくれるのってありますか?
例えばvectorなら、単純に中の要素だけを列挙してくれたりとか
ビルドにCMakeを使っているのでとりあえずCLionを使っていますが、これは
確かに変数の中身をリスト構造で見れますが、変数内の生のメンバー(M_なんちゃら等)
見えてる感じで、STLコンテナに関してはあまり親切ではないような
デバッグの際は見えた方がいい場合もあるのでしょうが。なら表示が切り替えられたりとか?
自分はmacOSですが、他のプラットフォームにしかないものも参考に聞いてみたいです
易しく表示してくれるのってありますか?
例えばvectorなら、単純に中の要素だけを列挙してくれたりとか
ビルドにCMakeを使っているのでとりあえずCLionを使っていますが、これは
確かに変数の中身をリスト構造で見れますが、変数内の生のメンバー(M_なんちゃら等)
見えてる感じで、STLコンテナに関してはあまり親切ではないような
デバッグの際は見えた方がいい場合もあるのでしょうが。なら表示が切り替えられたりとか?
自分はmacOSですが、他のプラットフォームにしかないものも参考に聞いてみたいです
827デフォルトの名無しさん
2024/04/26(金) 10:53:44.71ID:kftlKAnq 今からC++を勉強するならC++20を基準にやっても構いませんか?
828デフォルトの名無しさん
2024/04/26(金) 10:59:40.04ID:/+TxHGye c++20といわずc++23からやればいいのでは
829デフォルトの名無しさん
2024/04/26(金) 11:15:59.06ID:kftlKAnq 最新の規格で勉強して必要に応じて古い知識をつけていくような学び方でいいの?
830デフォルトの名無しさん
2024/04/26(金) 12:03:42.74ID:q/vvVdAs つべこべ言わずやれ
最短コースなんてない
最短コースなんてない
831デフォルトの名無しさん
2024/04/26(金) 13:37:23.03ID:+usxQk3U C++ は基礎の上に段階的に応用が乗っかっているような綺麗な構成ではない。
全部が入り組んで捏ねまわされてグダグダや。 そんでもってクソ巨大やねん。
どこから入っても同じ。
全部が入り組んで捏ねまわされてグダグダや。 そんでもってクソ巨大やねん。
どこから入っても同じ。
832デフォルトの名無しさん
2024/04/27(土) 18:08:12.52ID:nxPk0zOn 質問なのですが
std::string には std::to_string(int)他の簡単文字列化関数がありますが
std::basic_string<T> に対する簡単文字列化関数はどう?
std::string には std::to_string(int)他の簡単文字列化関数がありますが
std::basic_string<T> に対する簡単文字列化関数はどう?
833デフォルトの名無しさん
2024/04/27(土) 21:15:22.77ID:Zg+tfmdX >>826
WindowsのVisual Studioではできる
WindowsのVisual Studioではできる
834デフォルトの名無しさん
2024/04/28(日) 10:47:20.65ID:xKAeYuwJ 最初に学ぶ言語がC++なら、Cより学ぶのが大変じゃん
835832
2024/05/11(土) 19:13:43.45ID:RotYKdRC やっぱ数値からstd::basic_string<T>の文字列への変換とかTが決まらないとやり方がわからないから
std::basic_string<T>でそれをやりたい人が対応せよ(std::basic_string<T>版to_string()やstd::ostrstreamをT毎に作成せよ)という天の啓示?
証拠にstd::wstringについてはstd::wstring to_wstring(int)とかstd::wostrstream とかある
std::basic_string<T>でそれをやりたい人が対応せよ(std::basic_string<T>版to_string()やstd::ostrstreamをT毎に作成せよ)という天の啓示?
証拠にstd::wstringについてはstd::wstring to_wstring(int)とかstd::wostrstream とかある
836デフォルトの名無しさん
2024/05/13(月) 23:37:45.97ID:E3c8DTgZ >>835
分かっとるやないか
分かっとるやないか
837デフォルトの名無しさん
2024/05/17(金) 02:48:48.77ID:5PkVcelB OS上で動かすアプリ作りたくなったからC++とC#で悩んだんだけどどちらの長所も捨てがたい気がして両方学んでみるかな?って思ったんだけどC++でのおすすめの参考書とかあります?
一応、学生時代にC言語で五目並べとファイルの出力までは勉強してます。
一応ググって入門参考書とか調べましたがちょっとC言語齧ったのなら実戦的な例題集みたいなのが良いのでしょうか?
あとこの質問スレ違いだったらすいません。
一応、学生時代にC言語で五目並べとファイルの出力までは勉強してます。
一応ググって入門参考書とか調べましたがちょっとC言語齧ったのなら実戦的な例題集みたいなのが良いのでしょうか?
あとこの質問スレ違いだったらすいません。
838デフォルトの名無しさん
2024/05/17(金) 09:33:44.70ID:7hVV19/y Windows上のアプリをC++で作るのは少々ハードル高いが
個人的にオススメなのはWindows2000 プログラミング標準講座(ハーバート・シルト著)ってやつ
C++そのものの本は他の人が挙げてくれると思う
個人的にオススメなのはWindows2000 プログラミング標準講座(ハーバート・シルト著)ってやつ
C++そのものの本は他の人が挙げてくれると思う
839はちみつ餃子 ◆8X2XSCHEME
2024/05/19(日) 01:34:46.93ID:lh74nkjR どういう学び方が良いかは人による。
C++ の設計思想としては理解できた便利機能をその都度に導入する形で学んでいけるようにという配慮はしていると設計者は言っている。 実務でプログラミングをしてる人は「C++ をちゃんと習得するまで待ってくれ。 仕事を止めてくれ」とは言えないからね。 C を理解しているならとりあえず C のように書きながら部分的に C++ 的にしていける。
つまり実戦的な学びかたも一応はアリ。
ただ、実戦的な学習はやりたいことが出来てるならそれ以上深掘りする意欲につながらない。
C の書き方でやれるなら別の形に積極的に書き直したい理由って何?と感じてしまうことがある。
きちんとした理解に至らぬままの中途半端な形になりがち。
やりたいこと (書きたいもの) が明白なほうが道筋は付けやすいんだけど、やりたいことに邁進しすぎてもそれはそれで「学習」としてはイマイチなんだよ。
そのへんは程度問題というか匙加減というか、人による、場合によるとしか言いようがない。
個人的にはしっかりとした理屈っぽい入門書を一冊は読んでから方針を決めればいいと思ってる。
C++ の設計思想としては理解できた便利機能をその都度に導入する形で学んでいけるようにという配慮はしていると設計者は言っている。 実務でプログラミングをしてる人は「C++ をちゃんと習得するまで待ってくれ。 仕事を止めてくれ」とは言えないからね。 C を理解しているならとりあえず C のように書きながら部分的に C++ 的にしていける。
つまり実戦的な学びかたも一応はアリ。
ただ、実戦的な学習はやりたいことが出来てるならそれ以上深掘りする意欲につながらない。
C の書き方でやれるなら別の形に積極的に書き直したい理由って何?と感じてしまうことがある。
きちんとした理解に至らぬままの中途半端な形になりがち。
やりたいこと (書きたいもの) が明白なほうが道筋は付けやすいんだけど、やりたいことに邁進しすぎてもそれはそれで「学習」としてはイマイチなんだよ。
そのへんは程度問題というか匙加減というか、人による、場合によるとしか言いようがない。
個人的にはしっかりとした理屈っぽい入門書を一冊は読んでから方針を決めればいいと思ってる。
840デフォルトの名無しさん
2024/05/19(日) 14:09:52.90ID:y+g7UiM3 >>838
レス、ありがとうございます
Windows2000 プログラミング標準講座が近所の図書館にもなかったのでそこにある蔵書読んでみてVisual studio使ったプログラミングしたことないからそれをツールとして使った入門書でいいかな?って思ってしまいました。
>>839
レス、ありがとうございま。。
何を作りたいかの方向性でそれに使うものだけ勉強すれば速いというのはわかります。
自分的には作りたいアプリもあるけどまずGUIアプリを作るための基礎からやりたいなと思ってます。
理屈っぽい入門書の理屈っていう部分はプログラムのハードでの処理の考えとかかと思ったのですがそれはたぶん理工系の学部行ってたので通信情報の基礎理論は聞いたことあるので大丈夫だと思います。
C++は基礎わかってれば後は組み込みたい機能のコードを探せばいいってことと解釈してコード集みたいな辞典を使ったり、ネットで調べたりすればいいってことでいいのでしょうか?
レス、ありがとうございます
Windows2000 プログラミング標準講座が近所の図書館にもなかったのでそこにある蔵書読んでみてVisual studio使ったプログラミングしたことないからそれをツールとして使った入門書でいいかな?って思ってしまいました。
>>839
レス、ありがとうございま。。
何を作りたいかの方向性でそれに使うものだけ勉強すれば速いというのはわかります。
自分的には作りたいアプリもあるけどまずGUIアプリを作るための基礎からやりたいなと思ってます。
理屈っぽい入門書の理屈っていう部分はプログラムのハードでの処理の考えとかかと思ったのですがそれはたぶん理工系の学部行ってたので通信情報の基礎理論は聞いたことあるので大丈夫だと思います。
C++は基礎わかってれば後は組み込みたい機能のコードを探せばいいってことと解釈してコード集みたいな辞典を使ったり、ネットで調べたりすればいいってことでいいのでしょうか?
841はちみつ餃子 ◆8X2XSCHEME
2024/05/19(日) 15:08:47.80ID:lh74nkjR >>840
私がいう「理屈」は言語仕様のことのつもりで言ってた。
低レイヤから入った C ユーザーは C を使えているようでも言語仕様に対する理解が浅くなりがちで、
良くも悪くも機械語 (ハードウェアの挙動) と対応づけて考えてしまうところがある。
言語としての抽象とその実装は分けて考えないといけない。
現代的なコンパイラは最適化がメチャクソに賢いので実際に生成される機械語と一対一には対応づかないし、
言語仕様で未定義としているところを踏んだらわけのわからない動作を引き起こすので
言語仕様について一定以上には身に付けてから実践を始めないと何がなんだかわからないことだらけだと思う。
逆に一定以上に C++ の基礎を身に付けてからならあとはリファレンスを見ながらでも行けるけれど、
今の C++ の「基礎」は昔の C++ と比べるとかなり巨大になってしまっているので当初の C++ の設計思想のように
C から段階的に C++ を身に付けるってのはあまりお勧めできないと私は考えてる。
C++ はとにもかくにも巨大で言語機能はお互いに絡み合っているので部分ごとの理解なんて出来ないんじゃないかということ。
繰り返すけど、人による。
自分なりにどういう方向性で行ったらいいのか判断するためにはどこからでもいいから一旦は始めたらいい。
どうせまったく躓きなく進むなんて出来ないんだから駄目だったときにどこが駄目だったかを検討して
軌道修正するしかしょうがないんじゃないのかな。
私がいう「理屈」は言語仕様のことのつもりで言ってた。
低レイヤから入った C ユーザーは C を使えているようでも言語仕様に対する理解が浅くなりがちで、
良くも悪くも機械語 (ハードウェアの挙動) と対応づけて考えてしまうところがある。
言語としての抽象とその実装は分けて考えないといけない。
現代的なコンパイラは最適化がメチャクソに賢いので実際に生成される機械語と一対一には対応づかないし、
言語仕様で未定義としているところを踏んだらわけのわからない動作を引き起こすので
言語仕様について一定以上には身に付けてから実践を始めないと何がなんだかわからないことだらけだと思う。
逆に一定以上に C++ の基礎を身に付けてからならあとはリファレンスを見ながらでも行けるけれど、
今の C++ の「基礎」は昔の C++ と比べるとかなり巨大になってしまっているので当初の C++ の設計思想のように
C から段階的に C++ を身に付けるってのはあまりお勧めできないと私は考えてる。
C++ はとにもかくにも巨大で言語機能はお互いに絡み合っているので部分ごとの理解なんて出来ないんじゃないかということ。
繰り返すけど、人による。
自分なりにどういう方向性で行ったらいいのか判断するためにはどこからでもいいから一旦は始めたらいい。
どうせまったく躓きなく進むなんて出来ないんだから駄目だったときにどこが駄目だったかを検討して
軌道修正するしかしょうがないんじゃないのかな。
842デフォルトの名無しさん
2024/05/19(日) 15:25:20.86ID:TV8v+5zc843デフォルトの名無しさん
2024/05/19(日) 19:24:07.63ID:y+g7UiM3844はちみつ餃子 ◆8X2XSCHEME
2024/05/19(日) 20:21:36.73ID:lh74nkjR >>843
C++ の仕様は不変なわけではなくてたまに改定してるというのは考慮に入れる必要がある。
どの仕様かを言うときには改定年度を付けて表す通例があって、現時点では C++98, C++03, C++11, C++14, C++17, C++20, C++23 がある。
入門レベルなら最新を積極的に追うほどの必要はないけど、最低限度は C++11 だと思う。
改定の期間があいたせいでインパクトの大きい変化があった。
それより古い書籍は良書だとしても現状に合わないところは色々とあるかもしれない。
GCC や Clang は特に指定しなければ C++17 モードのようなので現時点の基本は C++17 くらいというのが一般的な認識なんじゃないかな。
C++ の仕様は不変なわけではなくてたまに改定してるというのは考慮に入れる必要がある。
どの仕様かを言うときには改定年度を付けて表す通例があって、現時点では C++98, C++03, C++11, C++14, C++17, C++20, C++23 がある。
入門レベルなら最新を積極的に追うほどの必要はないけど、最低限度は C++11 だと思う。
改定の期間があいたせいでインパクトの大きい変化があった。
それより古い書籍は良書だとしても現状に合わないところは色々とあるかもしれない。
GCC や Clang は特に指定しなければ C++17 モードのようなので現時点の基本は C++17 くらいというのが一般的な認識なんじゃないかな。
845デフォルトの名無しさん
2024/05/19(日) 21:02:45.49ID:TV8v+5zc あーそういや独習書いた人だっけ
独習は定番レベルで評価高い、ある程度Cの知識は前提になるけど読めると思う
C++標準講座は読んだことないのでわからんすまん
独習は定番レベルで評価高い、ある程度Cの知識は前提になるけど読めると思う
C++標準講座は読んだことないのでわからんすまん
8461
2024/05/29(水) 05:15:45.12ID:fgEqna2o なに?プログラムって。むつかしそうだなー
ぜんぜん知らないんだけど、ちょっとやってみたいなー
ってな人も、入れてあげてね。
そういうスレなんだから。
ぜんぜん知らないんだけど、ちょっとやってみたいなー
ってな人も、入れてあげてね。
そういうスレなんだから。
847デフォルトの名無しさん
2024/06/11(火) 02:11:04.90ID:T9Og4Yet 質問です。
独習でc++勉強してるのですが掛け算して出力するっていう練習問題見ててふと気づいたのですがこの本一体どの文字コードで保存すること考えて書いてるんだ?っていう疑問が出てきました。
sjisだとちゃんと日本語表示されるけど汎用性ないよな?ってことでUnicodeで書くこと前提で勉強したほうがいいよなって思ったんですが下のコードだと何を直せばいいのでしょうか?
#include <iostream>
using namespace std;
int main()
{
double hours, wage;
cout << "労働時間を入力する: ";
cin >> hours;
cout << "時給を入力する: ";
cin >> wage;
cout << "合計賃金は" << wage * hours << "円\n";
return 0;
}
独習でc++勉強してるのですが掛け算して出力するっていう練習問題見ててふと気づいたのですがこの本一体どの文字コードで保存すること考えて書いてるんだ?っていう疑問が出てきました。
sjisだとちゃんと日本語表示されるけど汎用性ないよな?ってことでUnicodeで書くこと前提で勉強したほうがいいよなって思ったんですが下のコードだと何を直せばいいのでしょうか?
#include <iostream>
using namespace std;
int main()
{
double hours, wage;
cout << "労働時間を入力する: ";
cin >> hours;
cout << "時給を入力する: ";
cin >> wage;
cout << "合計賃金は" << wage * hours << "円\n";
return 0;
}
848はちみつ餃子 ◆8X2XSCHEME
2024/06/11(火) 05:44:39.09ID:oZDOZRBo >>847
データの型としては unicode を扱えるようになってるけどコンソールは言語の外の話なので Unicode を扱えるかどうか、使えるにしてもどう切り替えるのかは言語仕様としては決まってない。
Unicode で出力は出来るけどそれを理解して表示できる環境かどうかはわからないということ。
データの型としては unicode を扱えるようになってるけどコンソールは言語の外の話なので Unicode を扱えるかどうか、使えるにしてもどう切り替えるのかは言語仕様としては決まってない。
Unicode で出力は出来るけどそれを理解して表示できる環境かどうかはわからないということ。
849デフォルトの名無しさん
2024/06/11(火) 10:47:36.44ID:GrH0S5VC 実行環境を変える
setlocale()するとか
setlocale()するとか
850デフォルトの名無しさん
2024/06/11(火) 15:21:46.44ID:T9Og4Yet851デフォルトの名無しさん
2024/06/11(火) 16:20:37.40ID:ILw6YbJs 長らくVS触ってなかったんであまり役に立たんかもしれんけど
・Visual Studioでutf-8でソース書く方法
http://tech.hikware.com/article/20171020a.html
・Win32APIをutf-8で使う
https://learn.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page
C++標準ライブラリに関してはロケール設定でいけるんじゃなかったっけ、違ってたらすまん
・Visual Studioでutf-8でソース書く方法
http://tech.hikware.com/article/20171020a.html
・Win32APIをutf-8で使う
https://learn.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page
C++標準ライブラリに関してはロケール設定でいけるんじゃなかったっけ、違ってたらすまん
852デフォルトの名無しさん
2024/06/11(火) 16:33:04.86ID:ILw6YbJs https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/reference/setlocale-wsetlocale?view=msvc-170
下の方にsetlocaleでutf-8指定する方法書いてる
で、ソースコードもロケールもutf-8になってりゃ>>847のコードそのままでutf-8で実行してくれるはずよ
下の方にsetlocaleでutf-8指定する方法書いてる
で、ソースコードもロケールもutf-8になってりゃ>>847のコードそのままでutf-8で実行してくれるはずよ
853デフォルトの名無しさん
2024/06/11(火) 16:50:13.04ID:ILw6YbJs https://learn.microsoft.com/ja-jp/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170
すまん、実行時もソースコードもオプションに/utf-8入れるだけだったわ
setlocaleしなくていい
utf-16にしたいんだったらまた別だけど
すまん、実行時もソースコードもオプションに/utf-8入れるだけだったわ
setlocaleしなくていい
utf-16にしたいんだったらまた別だけど
854はちみつ餃子 ◆8X2XSCHEME
2024/06/11(火) 17:31:31.68ID:kKWOd8Cb >>850
言語仕様には書いていないことだから実行環境 (OS やターミナル) のドキュメントを読んでねってこと。
色々な文字コードをサポートしていることもあるししてないこともある。
切り替えることが出来ることもあれば出来ないこともある。
それとストリームはリダイレクト (接続先の変更) される可能性がある。
やりたいことによっては
標準出力がターミナルに繋がっているときとファイルに繋がっているときを区別しなきゃならないかもしれない。
Unix 系 OS の場合はテキストを表示するのはターミナルで、ターミナルはごく普通のアプリケーションのひとつ。
OS 自体はアプリケーションとターミナルの仲立ちをしてるだけなんだけど……。
Windows の場合は標準のテキスト画面 (コンソール) は Windows に標準的に備わった特別なもの。
その特別なテキスト画面を使ってる間は Windows のドキュメントに書いてある通りにすればいいのだけど
Windows で別のターミナルを使うときはその制御方法の規格が確立してないから
主要なターミナルを判定して場当たり的な処理をしているのが現状。
近年は ConPTY という規格が使われ始めてるけどどんなターミナルもそれをサポートしているってわけではないから
結局は場当たり的に対処すべき対象が一個増えただけって感じ。 (将来的には統一されるといいなぁ……)
更に Windows は C ランタイムサポートが文字コード変換の機能も持っていて接続先を勝手に判定して
変換することがあって、その挙動がかなりわけがわからない。
色々あるけどまとめると「こうすればいい」という簡単な説明が出来ない入り組んだ事情があるって話。
言語仕様には書いていないことだから実行環境 (OS やターミナル) のドキュメントを読んでねってこと。
色々な文字コードをサポートしていることもあるししてないこともある。
切り替えることが出来ることもあれば出来ないこともある。
それとストリームはリダイレクト (接続先の変更) される可能性がある。
やりたいことによっては
標準出力がターミナルに繋がっているときとファイルに繋がっているときを区別しなきゃならないかもしれない。
Unix 系 OS の場合はテキストを表示するのはターミナルで、ターミナルはごく普通のアプリケーションのひとつ。
OS 自体はアプリケーションとターミナルの仲立ちをしてるだけなんだけど……。
Windows の場合は標準のテキスト画面 (コンソール) は Windows に標準的に備わった特別なもの。
その特別なテキスト画面を使ってる間は Windows のドキュメントに書いてある通りにすればいいのだけど
Windows で別のターミナルを使うときはその制御方法の規格が確立してないから
主要なターミナルを判定して場当たり的な処理をしているのが現状。
近年は ConPTY という規格が使われ始めてるけどどんなターミナルもそれをサポートしているってわけではないから
結局は場当たり的に対処すべき対象が一個増えただけって感じ。 (将来的には統一されるといいなぁ……)
更に Windows は C ランタイムサポートが文字コード変換の機能も持っていて接続先を勝手に判定して
変換することがあって、その挙動がかなりわけがわからない。
色々あるけどまとめると「こうすればいい」という簡単な説明が出来ない入り組んだ事情があるって話。
855デフォルトの名無しさん
2024/06/11(火) 22:55:22.54ID:T9Og4Yet すいません。
私の環境ただ単にUTFが使用可能になってなかっただけでした。
私の環境ただ単にUTFが使用可能になってなかっただけでした。
856デフォルトの名無しさん
2024/06/12(水) 16:16:19.83ID:HDPWhZcO termcap/terminfoとか
init.d
inittab
getty
init.d
inittab
getty
857デフォルトの名無しさん
2024/06/13(木) 02:54:21.20ID:PAaiBuyr 人間に匹敵する知能を持った汎用人工知能を開発した研究者に総額100万ドルの賞金を授与するコンテスト「ARC Prize」が開催
858デフォルトの名無しさん
2024/06/15(土) 17:34:41.45ID:kg6WNOQa859はちみつ餃子 ◆8X2XSCHEME
2024/06/15(土) 19:41:12.56ID:g9ixUcaw860858
2024/06/15(土) 21:31:29.30ID:kg6WNOQa 俺のエディタは、EmEditor Professional (64-bit)だ。
だ。だからC++は、C++17だ。
わからなかった。ごめんな。
だ。だからC++は、C++17だ。
わからなかった。ごめんな。
861デフォルトの名無しさん
2024/06/16(日) 00:50:11.77ID:v0fD0nKy C++と文字コードに関してはこの記事が面白かった
https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b
俺もあまり詳しくはないから全部理解できた訳じゃないけど、筆者の人がブチギレまくってるのを感じ取るだけでも面白かった
https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b
俺もあまり詳しくはないから全部理解できた訳じゃないけど、筆者の人がブチギレまくってるのを感じ取るだけでも面白かった
862デフォルトの名無しさん
2024/06/16(日) 23:06:40.05ID:+HL215mo >>857
どうやってチューリングテストするんじゃ……
どうやってチューリングテストするんじゃ……
863デフォルトの名無しさん
2024/06/16(日) 23:21:48.48ID:+HL215mo coutやcinとかなiostream系の入出力手段のうちのワイド文字でないやつは
エスケープ文字('\\'とか)や書式指定文字('%'とか)に依存しないから
つまりたまたまマルチバイト文字の一部が '\\' や '%' に一致してもなんら実害が無いから
Shift JISの入出力が問題を引き起こすことは無いという認識でおk?
エスケープ文字('\\'とか)や書式指定文字('%'とか)に依存しないから
つまりたまたまマルチバイト文字の一部が '\\' や '%' に一致してもなんら実害が無いから
Shift JISの入出力が問題を引き起こすことは無いという認識でおk?
864はちみつ餃子 ◆8X2XSCHEME
2024/06/16(日) 23:45:30.66ID:Crm/SwBu >>863
言語仕様的にはテキストモードでは実行環境の都合で各種の変換を入れても良い。 (入れなくても良い)
実際に Windows では文字コードや改行コードの変換をする。
改行が \r\n であるようなテキストを読んでも内部的には \n であるように扱えたりしてるのを不思議に思ったことない?
変換するということは変換元が想定通りじゃないときには破綻する可能性がある。
Shift JIS を使う設定にしてないときに Shift JIS を渡したら駄目かもね。
バイナリモードではバイト列そのまま。
Linux だとテキストモードとバイナリモードは区別がない。
言語仕様的にはテキストモードでは実行環境の都合で各種の変換を入れても良い。 (入れなくても良い)
実際に Windows では文字コードや改行コードの変換をする。
改行が \r\n であるようなテキストを読んでも内部的には \n であるように扱えたりしてるのを不思議に思ったことない?
変換するということは変換元が想定通りじゃないときには破綻する可能性がある。
Shift JIS を使う設定にしてないときに Shift JIS を渡したら駄目かもね。
バイナリモードではバイト列そのまま。
Linux だとテキストモードとバイナリモードは区別がない。
865デフォルトの名無しさん
2024/06/17(月) 00:54:42.78ID:pXzMaPAe >>864
だいたいわかりた、
>実際に Windows では文字コードや改行コードの変換をする。
テキストモードにおける '\n' <--> '\r\n' 変換をやるだけでも、
cout << "アイウエオカキクケコ\nさしすせそ" << endl;
と書かれたうちの '\n' と endl の2箇所だけ正確に変換するためには、
上記1行の中に暗黙に含まれるSI/SOおよび2バイト文字の「区」を表す上位バイトを
「実行時に」解釈する必要がある
つまりランタイムはASCIIのつもりで文字列を解釈しては駄目で、
Shift JISというものを知っている必要があり、これが
>Shift JIS を使う設定にしてないときに Shift JIS を渡したら駄目かもね。
につながるんだと思う。
だいたいわかりた、
>実際に Windows では文字コードや改行コードの変換をする。
テキストモードにおける '\n' <--> '\r\n' 変換をやるだけでも、
cout << "アイウエオカキクケコ\nさしすせそ" << endl;
と書かれたうちの '\n' と endl の2箇所だけ正確に変換するためには、
上記1行の中に暗黙に含まれるSI/SOおよび2バイト文字の「区」を表す上位バイトを
「実行時に」解釈する必要がある
つまりランタイムはASCIIのつもりで文字列を解釈しては駄目で、
Shift JISというものを知っている必要があり、これが
>Shift JIS を使う設定にしてないときに Shift JIS を渡したら駄目かもね。
につながるんだと思う。
866デフォルトの名無しさん
2024/06/17(月) 00:57:00.44ID:pXzMaPAe しかし
>実行環境の都合で各種の変換を入れても良い。
とC++の仕様には書いてあると言っても実際には透過的でない文字コード変換とか有り得ないんでないので?
例えば
ofstream ofs("foo.txt"); ofs << "アイウエオカキクケコ\nさしすせそ" << endl; // (1)
std::string s1, s2;
ifstream ifs("foo.txt"); ifs >> s1 >> s2; // (2)
とやったらs1、s2とも中身は(1)の記述をコンパイル時に解釈した通りになる、
という期待動作しかありえないのでは……
具体的には
s1の中身は SI アイウエオカキクケコ SO の12バイト(末尾NUL除く)になって、
s2の中身は さしすせそ という10バイト(末尾NUL除く)になる、
>実行環境の都合で各種の変換を入れても良い。
とC++の仕様には書いてあると言っても実際には透過的でない文字コード変換とか有り得ないんでないので?
例えば
ofstream ofs("foo.txt"); ofs << "アイウエオカキクケコ\nさしすせそ" << endl; // (1)
std::string s1, s2;
ifstream ifs("foo.txt"); ifs >> s1 >> s2; // (2)
とやったらs1、s2とも中身は(1)の記述をコンパイル時に解釈した通りになる、
という期待動作しかありえないのでは……
具体的には
s1の中身は SI アイウエオカキクケコ SO の12バイト(末尾NUL除く)になって、
s2の中身は さしすせそ という10バイト(末尾NUL除く)になる、
867デフォルトの名無しさん
2024/06/17(月) 01:13:07.47ID:pXzMaPAe いやトチ狂ったスマンヌ、
Shift JISの2バイト文字は上位下位ともコントロールコード('\r' や '\n' を含む)とはバッティングしないから
>>865 の理解はやや的を外していた……orz
テキストモードにおける '\n' <--> '\r\n' 変換は、ランタイムがShift JIS文字列をASCIIとして解釈してそれを行っても何ら問題を生じない。
しかし、であればやっぱ>>863に戻って、実は実害無いのでは……
Shift JISの2バイト文字は上位下位とも数字とかともバッティングしないようになっているし……
透過的でない文字コード変換(>>866)が無い限り、cout して cin して結果が変になるケースが思いつかなsげ……
(正確には char c; cin >> c; で 2バイト文字 "陰" の2バイト目を "A" として受け取ってしまう、系の避けようが無い事故は除く
Shift JISの2バイト文字は上位下位ともコントロールコード('\r' や '\n' を含む)とはバッティングしないから
>>865 の理解はやや的を外していた……orz
テキストモードにおける '\n' <--> '\r\n' 変換は、ランタイムがShift JIS文字列をASCIIとして解釈してそれを行っても何ら問題を生じない。
しかし、であればやっぱ>>863に戻って、実は実害無いのでは……
Shift JISの2バイト文字は上位下位とも数字とかともバッティングしないようになっているし……
透過的でない文字コード変換(>>866)が無い限り、cout して cin して結果が変になるケースが思いつかなsげ……
(正確には char c; cin >> c; で 2バイト文字 "陰" の2バイト目を "A" として受け取ってしまう、系の避けようが無い事故は除く
868デフォルトの名無しさん
2024/06/17(月) 16:31:20.06ID:prlYSpwu wstringがutf-32だったら良いのに
869デフォルトの名無しさん
2024/06/18(火) 11:56:24.49ID:mldi07Wv >>861
その人ブチギレてるフリしてるだけの厨二病だから・・・
その人ブチギレてるフリしてるだけの厨二病だから・・・
870デフォルトの名無しさん
2024/07/17(水) 14:22:34.59ID:UFGYctg0 std::functionって関数の「比較」はできないんでしたっけ?
例えばあるクラスが std::function<..> m_callback みたいなインスタンス変数を持ってて
そこにコールバックを登録できるメソッドがあるとします
registerCallback(std::function<..>& callback) { m_callback = callback; } みたいな
で、registerCallback(func)が呼ばれた後、正しいコールバックが保持されていることをテスト
したいのですが、例えばregisterCallback()の引数に渡したstd::function<..>のオブジェクトと
m_callbackはどうしたら比較できるでしょうか。単純に == ではエラーになる模様です
例えばあるクラスが std::function<..> m_callback みたいなインスタンス変数を持ってて
そこにコールバックを登録できるメソッドがあるとします
registerCallback(std::function<..>& callback) { m_callback = callback; } みたいな
で、registerCallback(func)が呼ばれた後、正しいコールバックが保持されていることをテスト
したいのですが、例えばregisterCallback()の引数に渡したstd::function<..>のオブジェクトと
m_callbackはどうしたら比較できるでしょうか。単純に == ではエラーになる模様です
871はちみつ餃子 ◆8X2XSCHEME
2024/07/17(水) 16:12:07.26ID:rcKIBlXh >>870
メンバ関数テンプレート target を使えば元の関数を取り出せる。
https://wandbox.org/permlink/3sCREueD2sVYMW9t
ただし、取り出すときに元の型を指定する必要がある。
ただの関数ならば簡単なのだけれど、
ラムダ式から直接に入れた場合には適切な型を指定できない。
ラムダ式が生成する値はそれぞれに固有の型を持つので。
一旦 std::function に入れたらあまり取り出さない (取り出す必要がない) 設計が望ましいと思う。
テストのためだけなら大丈夫だと思うけど。
メンバ関数テンプレート target を使えば元の関数を取り出せる。
https://wandbox.org/permlink/3sCREueD2sVYMW9t
ただし、取り出すときに元の型を指定する必要がある。
ただの関数ならば簡単なのだけれど、
ラムダ式から直接に入れた場合には適切な型を指定できない。
ラムダ式が生成する値はそれぞれに固有の型を持つので。
一旦 std::function に入れたらあまり取り出さない (取り出す必要がない) 設計が望ましいと思う。
テストのためだけなら大丈夫だと思うけど。
872デフォルトの名無しさん
2024/07/19(金) 12:25:52.15ID:HkXmecYp functionではなくオーバーロードで生の関数や関数オブジェクト(ラムダ含む)を受け取って、functionと共にアドレス値を保存すればいいのでは
関数オブジェクトの場合はoperator ()のアドレス
関数オブジェクトの場合はoperator ()のアドレス
873デフォルトの名無しさん
2024/07/21(日) 02:13:54.03ID:5YGWxq2c 独習でc++を勉強していて時々プロセッサとかライブラリ関数これなんだろ?になるのですがそういうの調べる辞典的なものってあるのでしょうか?
あるのでしたらおすすめのもの教えてもらえませんか
あるのでしたらおすすめのもの教えてもらえませんか
874デフォルトの名無しさん
2024/07/21(日) 02:27:27.18ID:neWsPxIF C++標準に関しては
https://cpprefjp.github.io/
https://ja.cppreference.com/w/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
プラットフォーム固有のものに関してもそれぞれあるけど
関数名でググったら大抵上の方に出てくるとおも
https://cpprefjp.github.io/
https://ja.cppreference.com/w/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
プラットフォーム固有のものに関してもそれぞれあるけど
関数名でググったら大抵上の方に出てくるとおも
875はちみつ餃子 ◆8X2XSCHEME
2024/07/21(日) 08:39:43.55ID:uupG6eva ググって出てくるようなのは誤った記述も多い。
あまり信用しすぎずになるべく複数の情報源を持つのが好ましいと思う。
言語仕様は改訂もあるから資料の日付を見てどの版に対応するのかも意識する必要がある。
>>874 が示すような有志がまとめているサイトはちょっとした企業よりも高いモチベーションがあるのか質は高い。
本当にありがたいサイトなので役に立ったと思ったらちょっとくらいは寄付してあげてね。
あまり信用しすぎずになるべく複数の情報源を持つのが好ましいと思う。
言語仕様は改訂もあるから資料の日付を見てどの版に対応するのかも意識する必要がある。
>>874 が示すような有志がまとめているサイトはちょっとした企業よりも高いモチベーションがあるのか質は高い。
本当にありがたいサイトなので役に立ったと思ったらちょっとくらいは寄付してあげてね。
876デフォルトの名無しさん
2024/07/21(日) 12:22:32.16ID:qC5USrOr Unix環境ならmanは割と手軽で良い
877デフォルトの名無しさん
2024/07/21(日) 15:22:13.51ID:neWsPxIF いや、プラットフォーム固有って言ったのは
Microsoft Learn(旧MSDN)とかApple Developerとかのことやぞ
Microsoft Learn(旧MSDN)とかApple Developerとかのことやぞ
878デフォルトの名無しさん
2024/07/21(日) 16:05:28.79ID:neWsPxIF 安価忘れてた、>>875ね
複数の情報源持つべきとかは同意するけど
プラットフォーム固有のは公式が一番信用できるに決まってる(ただMicrosoftのは機械翻訳になってから日本語版がアレだけど・・・)
複数の情報源持つべきとかは同意するけど
プラットフォーム固有のは公式が一番信用できるに決まってる(ただMicrosoftのは機械翻訳になってから日本語版がアレだけど・・・)
879デフォルトの名無しさん
2024/07/21(日) 19:10:23.03ID:5YGWxq2c880デフォルトの名無しさん
2024/07/21(日) 21:04:50.60ID:D0FAs2Ah cpprefjpはなんかTシャツ作るらしいから記念に買うわ
https://github.com/cpprefjp/site/issues/1296
https://github.com/cpprefjp/site/issues/1296
881デフォルトの名無しさん
2024/07/21(日) 21:06:26.85ID:neWsPxIF 手元に置いておく辞典系の本があっても良いと思うけどちょっとお勧めできるものを知らない・・(C++11より前のものしか買ったことない)
秋葉原とかの技術系の書店で手に取って読んでみるのがベストなんだけどねぇ
秋葉原とかの技術系の書店で手に取って読んでみるのがベストなんだけどねぇ
882デフォルトの名無しさん
2024/07/23(火) 01:20:07.66ID:Rfg4Mjqa >>880
誰得
誰得
883デフォルトの名無しさん
2024/07/25(木) 15:13:06.50ID:kulC2cnH >>882
1万円くらいで転売しようと考えています
1万円くらいで転売しようと考えています
884デフォルトの名無しさん
2024/07/29(月) 05:00:32.70ID:ycfafYuZ885デフォルトの名無しさん
2024/08/01(木) 04:44:09.33ID:ZgmEa4OS unordered_map の extract というのはC++17以降でしか使えないのですか
886デフォルトの名無しさん
2024/08/01(木) 09:34:34.68ID:jWmufzw0887デフォルトの名無しさん
2024/08/02(金) 22:37:31.58ID:8YStqjv0 ここでGoogleTestの質問をしてもよろしいでしょうか?
888デフォルトの名無しさん
2024/08/04(日) 12:54:37.69ID:jHE0rxct 質問なのですが派生とshared_ptr<T>を組み合わせたときに、
class Base {
int m_x;
protected: // Baseクラスのコンストラクタはprotected
Base(int x) : m_x(x) { }
virtual ~Base() { } // 仮想関数にしてもしなくても同じ下記現象
};
class Derived {
public: // 派生クラスのコンストラクタはpublic
Derived() : Base(10) { }
};
std::shared_ptr<Base> pBase(new Derived());
とやったら
error C2248: 'Base::~Base': protected メンバー (クラス 'Base' で宣言されている) にアクセスできません。
と言われるんだけどなんで?その判定要る??
class Base {
int m_x;
protected: // Baseクラスのコンストラクタはprotected
Base(int x) : m_x(x) { }
virtual ~Base() { } // 仮想関数にしてもしなくても同じ下記現象
};
class Derived {
public: // 派生クラスのコンストラクタはpublic
Derived() : Base(10) { }
};
std::shared_ptr<Base> pBase(new Derived());
とやったら
error C2248: 'Base::~Base': protected メンバー (クラス 'Base' で宣言されている) にアクセスできません。
と言われるんだけどなんで?その判定要る??
889デフォルトの名無しさん
2024/08/04(日) 12:56:00.59ID:jHE0rxct 自己解決しますた
文句が言われているのはBaseのコンストラクタでは無くてデストラクタか……orz
文句が言われているのはBaseのコンストラクタでは無くてデストラクタか……orz
890デフォルトの名無しさん
2024/08/04(日) 14:08:27.06ID:dHG4OJIq 本当に解決したの?
それDerivedがBaseを継承していないよ?
それDerivedがBaseを継承していないよ?
891デフォルトの名無しさん
2024/08/04(日) 15:33:06.74ID:jHE0rxct あっはい
class Base {
int m_x;
protected: // Baseクラスのコンストラクタはprotected
Base(int x) : m_x(x) { }
pulic: // Baseのデストラクタをpublicに修正 // (1)
virtual ~Base() { }
};
class Derived : public Base { // 誤記訂正 // (2)
public: // 派生クラスのコンストラクタはpublic
Derived() : Base(10) { }
};
std::shared_ptr<Base> pBase(new Derived()); // (3)
(1)で解決、(2)は誤記訂正
文句言われたのがBaseのコンストラクタだとすると(3)においてDerivedのインスタンスがshared_ptr<Base>に渡される時点で呼び出し済なので
class Base {
int m_x;
protected: // Baseクラスのコンストラクタはprotected
Base(int x) : m_x(x) { }
pulic: // Baseのデストラクタをpublicに修正 // (1)
virtual ~Base() { }
};
class Derived : public Base { // 誤記訂正 // (2)
public: // 派生クラスのコンストラクタはpublic
Derived() : Base(10) { }
};
std::shared_ptr<Base> pBase(new Derived()); // (3)
(1)で解決、(2)は誤記訂正
文句言われたのがBaseのコンストラクタだとすると(3)においてDerivedのインスタンスがshared_ptr<Base>に渡される時点で呼び出し済なので
892デフォルトの名無しさん
2024/08/04(日) 15:35:40.71ID:jHE0rxct (3)でコンパイルエラーになるのは辻褄があわなくね?!と思った次第
文句言われたのがBaseのデストラクタだったからだいたい理解すた
(std::shared_ptr<Base>はあくまでBaseしか知らないから、Base::~Base()がpublicでなかったら
呼べないという解釈でエラーにするのは当然な可能性
文句言われたのがBaseのデストラクタだったからだいたい理解すた
(std::shared_ptr<Base>はあくまでBaseしか知らないから、Base::~Base()がpublicでなかったら
呼べないという解釈でエラーにするのは当然な可能性
893デフォルトの名無しさん
2024/08/05(月) 09:26:19.70ID:SHyTm/CM std::unordered_map<std::string, std::unique_ptr<int>> map があった時のmapの管理について
教えてください
この場合値の方がunique_ptrなのでコピーはできませんよね。すると値を取り出す時は
foo = std::move(map["hoge"]); としないといけない?
で、moveしたあとは hogeに対する値は無効になっちゃってますよね。ということは
自分で消さないといけない? map.erase("hoo")とかで
教えてください
この場合値の方がunique_ptrなのでコピーはできませんよね。すると値を取り出す時は
foo = std::move(map["hoge"]); としないといけない?
で、moveしたあとは hogeに対する値は無効になっちゃってますよね。ということは
自分で消さないといけない? map.erase("hoo")とかで
894デフォルトの名無しさん
2024/08/05(月) 12:50:07.44ID:Gb5pye15 >>893
>この場合値の方がunique_ptrなのでコピーはできませんよね。すると値を取り出す時は
>foo = std::move(map["hoge"]); としないといけない?
「値を取り出す」をどういう意味で使っているかによる
単に中身を読むだけならmoveしなくても良い
>この場合値の方がunique_ptrなのでコピーはできませんよね。すると値を取り出す時は
>foo = std::move(map["hoge"]); としないといけない?
「値を取り出す」をどういう意味で使っているかによる
単に中身を読むだけならmoveしなくても良い
895はちみつ餃子 ◆8X2XSCHEME
2024/08/05(月) 12:51:26.12ID:cmuXon6W >>893
その考え方で正しい。
std::unique_ptr をムーブすると抜け殻のほうのオブジェクトは nullptr を指すようになることは保証されるが、
そのスマートポインタ自体が std::unordered_map から勝手に消えたりはしない。
消えて欲しいならそのための操作は必要。
その考え方で正しい。
std::unique_ptr をムーブすると抜け殻のほうのオブジェクトは nullptr を指すようになることは保証されるが、
そのスマートポインタ自体が std::unordered_map から勝手に消えたりはしない。
消えて欲しいならそのための操作は必要。
896はちみつ餃子 ◆8X2XSCHEME
2024/08/05(月) 12:53:54.43ID:cmuXon6W std::unique_ptr 自体はコピーできないがそれが指しているオブジェクトを読むだけなら出来るしコピーすることも出来る (コピーコンストラクタを削除していないなら) 。
897デフォルトの名無しさん
2024/08/06(火) 11:13:46.48ID:SBxTyrdX Rust使おうず
898デフォルトの名無しさん
2024/08/06(火) 12:55:07.35ID:7fXoqzm8 いらね
899デフォルトの名無しさん
2024/08/12(月) 00:31:08.71ID:YAf3BhD8 標準講座C++―基礎からSTLを利用したプログラミングまで 新装版 ハーバート シルト著が気になったのですがこれで勉強したことある方いますか?
900はちみつ餃子 ◆8X2XSCHEME
2024/08/12(月) 01:07:19.65ID:CLy07uUA >>899
読んだことは無いけど 2009 年発売ってのは微妙な部分かもと思う。
2011 年の言語仕様改定がインパクトの強い変更を含んでいて基本的な書き方の習慣に大きな変化があった。
そこらへんの事情が含まれない本だと現状にそぐわない。
読んだことは無いけど 2009 年発売ってのは微妙な部分かもと思う。
2011 年の言語仕様改定がインパクトの強い変更を含んでいて基本的な書き方の習慣に大きな変化があった。
そこらへんの事情が含まれない本だと現状にそぐわない。
901デフォルトの名無しさん
2024/08/12(月) 03:05:00.33ID:LOlm/bL8 weak_ptrが処理の途中で解放されてしまうのを防ぐために lock()を呼んでshared_ptrを
取得してから処理、というのがありますが、
lock()を呼んだ時点で既に解放されていることもあるわけですよね?
確かにlock()の戻り値をチェックして不正な呼び出し等を防げるのはありがたいのですが、
そもそもオブジェクトが既に解放されているのは残念といいますか。
lock()を呼んでからする処理の場所に来るまでに解放されないようにしたい、と思った場合、
どうしたらよいのでしょうか? もしかしてそもそもweak_ptrを使うな、ということになります?
取得してから処理、というのがありますが、
lock()を呼んだ時点で既に解放されていることもあるわけですよね?
確かにlock()の戻り値をチェックして不正な呼び出し等を防げるのはありがたいのですが、
そもそもオブジェクトが既に解放されているのは残念といいますか。
lock()を呼んでからする処理の場所に来るまでに解放されないようにしたい、と思った場合、
どうしたらよいのでしょうか? もしかしてそもそもweak_ptrを使うな、ということになります?
902デフォルトの名無しさん
2024/08/12(月) 03:59:48.65ID:ArETDaeV あいまいな言葉よりコード見せてみ
903デフォルトの名無しさん
2024/08/12(月) 08:49:28.44ID:+jMHtzbv 既に寿命が切れてる場合はlock() が無効な shared_ptr を返すのでそれで判定する
lock() を呼んだ後は戻り値の shared_ptr が寿命を伸ばすので問題ない
shared_ptrは「有効なshared_ptrが1つ以上ある間はオブジェクトの寿命が消えない」ものなので、lock() が返すshared_ptrを保持してる間は消えないよ
lockを「weak_ptrからshared_ptrへの昇格を試みる」ものと考えても良い
lockしたい箇所の時点で必ずオブジェクトが生きていて欲しいなら、それはweak_ptrでなくshared_ptrを使うべき
lock() を呼んだ後は戻り値の shared_ptr が寿命を伸ばすので問題ない
shared_ptrは「有効なshared_ptrが1つ以上ある間はオブジェクトの寿命が消えない」ものなので、lock() が返すshared_ptrを保持してる間は消えないよ
lockを「weak_ptrからshared_ptrへの昇格を試みる」ものと考えても良い
lockしたい箇所の時点で必ずオブジェクトが生きていて欲しいなら、それはweak_ptrでなくshared_ptrを使うべき
904デフォルトの名無しさん
2024/08/12(月) 10:20:21.64ID:Lq53CINI >>899
2000年くらいにSTLはこれで勉強したよ
基本的なことは網羅されているが
C++の新しい仕様には対応してないので
別途学習すべし
いまもっと良い本があるかは分からない
C++の仕様は建て増しなので
この本に書かれていることは無意味ではない
2000年くらいにSTLはこれで勉強したよ
基本的なことは網羅されているが
C++の新しい仕様には対応してないので
別途学習すべし
いまもっと良い本があるかは分からない
C++の仕様は建て増しなので
この本に書かれていることは無意味ではない
905デフォルトの名無しさん
2024/08/12(月) 13:09:35.61ID:XQ/hRBSk キメラ
906デフォルトの名無しさん
2024/08/12(月) 16:00:24.68ID:K9Aw1MHl 超初心者とは何なのか・・・
907デフォルトの名無しさん
2024/08/13(火) 01:12:06.02ID:sOEG0OlC >>900>>904
返答ありがとうございます。
今同著者の別の本で勉強中ですが基本的なところでこれも買っとこうかな?って質問しました。
基本参考書として買ってみます。
基礎的なところ終わったら自分が作りたいプログラムに必要な現状の本でも買ってみます。
返答ありがとうございます。
今同著者の別の本で勉強中ですが基本的なところでこれも買っとこうかな?って質問しました。
基本参考書として買ってみます。
基礎的なところ終わったら自分が作りたいプログラムに必要な現状の本でも買ってみます。
908デフォルトの名無しさん
2024/08/13(火) 01:32:59.16ID:sOEG0OlC すいません。誰か下のコンパイルオプションわかる方いますか?
解いてた問題の解答にも文字化けするって書いてあったので文字化け対策のオプションなんかないかな?って思って調べたらこのオプションで解決できるって出てたので使ってた人の入力例そのままオプション挿入してみてちゃんと解決できたから気になって調べたんですがググっても出てこなくて入力例が次の行のやつです。
g++ test.cpp -finput-charset=CP932 -fexec-charset=CP932
-finput-charset
-fexec-charset
解いてた問題の解答にも文字化けするって書いてあったので文字化け対策のオプションなんかないかな?って思って調べたらこのオプションで解決できるって出てたので使ってた人の入力例そのままオプション挿入してみてちゃんと解決できたから気になって調べたんですがググっても出てこなくて入力例が次の行のやつです。
g++ test.cpp -finput-charset=CP932 -fexec-charset=CP932
-finput-charset
-fexec-charset
909デフォルトの名無しさん
2024/08/13(火) 02:09:15.07ID:sAvdrrrS910デフォルトの名無しさん
2024/08/13(火) 07:27:51.38ID:8FMmWnXe ああなるほど、意図せずマイナス検索状態になってたから一件もヒットしなかったってことか
あるある
あるある
911デフォルトの名無しさん
2024/08/13(火) 08:43:34.22ID:6ajF2Nvb >>899
シルトは有名
ロベールも有名だったけど、
C++11 に対応していないので古い
STL標準講座、1999年
ハーバート・シルト 著
επιστημη(エピステーメー) 監修
この本も古い。
確か、エピステーメーはC++ の標準化委員だっけ?
C++テンプレートテクニック―簡潔で再利用しやすいコードのためのC++活用術
επιστημη/高橋 晶【著】、2009
独習C++ 新版、2019/11
高橋 航平 (著), επιστημη(エピステーメー) (監修)
シルトは有名
ロベールも有名だったけど、
C++11 に対応していないので古い
STL標準講座、1999年
ハーバート・シルト 著
επιστημη(エピステーメー) 監修
この本も古い。
確か、エピステーメーはC++ の標準化委員だっけ?
C++テンプレートテクニック―簡潔で再利用しやすいコードのためのC++活用術
επιστημη/高橋 晶【著】、2009
独習C++ 新版、2019/11
高橋 航平 (著), επιστημη(エピステーメー) (監修)
912デフォルトの名無しさん
2024/08/13(火) 12:38:43.84ID:sOEG0OlC913デフォルトの名無しさん
2024/08/13(火) 12:57:30.56ID:lcpgo4xV914デフォルトの名無しさん
2024/08/14(水) 09:51:50.71ID:UePmitOB 変数名の付け方について教えてくだち
Objectの個数、とかは nobjs とか objcnt (類例: argc)とかは本に載っていてそれぞれ
nobjs --- number of objects の短縮表記
objcnt --- object count の短縮表記(名詞obuectが形容詞的活用
となって対応する同じ語順の英語表現がある気がするのですが
<limit.h> の INT_MAX、INT_MIN はmaxやminがなぜ後置?
何の短縮形?
minやmaxの後置と前置の使い分けとは一体……
Objectの個数、とかは nobjs とか objcnt (類例: argc)とかは本に載っていてそれぞれ
nobjs --- number of objects の短縮表記
objcnt --- object count の短縮表記(名詞obuectが形容詞的活用
となって対応する同じ語順の英語表現がある気がするのですが
<limit.h> の INT_MAX、INT_MIN はmaxやminがなぜ後置?
何の短縮形?
minやmaxの後置と前置の使い分けとは一体……
915はちみつ餃子 ◆8X2XSCHEME
2024/08/14(水) 10:32:46.90ID:z6gmNdON >>914
C は一貫した名付規約 (naming convention) を定めていないし、主要な処理系が持っていたものを追認する形で仕様に入ることもよくあるので起源ごとに名前の方式は異なる。
慣例はおおよそ踏襲されるのでもし新しい整数型が追加されたらそれの最大・最小値は同じような名前で表されると思うけれど全体を通したルールはない。
C は一貫した名付規約 (naming convention) を定めていないし、主要な処理系が持っていたものを追認する形で仕様に入ることもよくあるので起源ごとに名前の方式は異なる。
慣例はおおよそ踏襲されるのでもし新しい整数型が追加されたらそれの最大・最小値は同じような名前で表されると思うけれど全体を通したルールはない。
916デフォルトの名無しさん
2024/08/14(水) 11:43:42.69ID:gAudIBvM MIN_LONG, MIN_SHORT, MIN_USHORT だとmin まで同じで探しにくい
INT_MAXだとINT_ まで打てばコード補完できるけど、逆の語順だとMAX_ まで打った際に各型の候補がズラーっと並ぶことになる
当時は高級なエディタは無いし、多分そんな意図で命名してないと思うけど 、便利と言えば便利
意味を考えるならそれは max of int でなく、intという空間におけるmaxという値 (言語によってはint.max と書くような値) と考えると良いと思う
INT_MAXだとINT_ まで打てばコード補完できるけど、逆の語順だとMAX_ まで打った際に各型の候補がズラーっと並ぶことになる
当時は高級なエディタは無いし、多分そんな意図で命名してないと思うけど 、便利と言えば便利
意味を考えるならそれは max of int でなく、intという空間におけるmaxという値 (言語によってはint.max と書くような値) と考えると良いと思う
917デフォルトの名無しさん
2024/08/14(水) 13:14:34.06ID:+mepCwPn C++ならstd::numeric_limits使おうよ
918デフォルトの名無しさん
2024/08/14(水) 13:42:54.01ID:UePmitOBレス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 20代の3割が「テレビ見ない」現実…そして静かに広がる「究極のテレビ離れ」とは [muffin★]
