[過去ログ] C++相談室 part134 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
3(3): デフォルトの名無しさん (ワッチョイ 3d46-7dS8) [sage] 2018/01/20(土) 09:24:34 ID:i+Y70H5F0(1) AAS
前スレのvectorのsize_tの質問した者だけど
実際gprofでvectorの[]が重い原因になってることを確認してる
次に重い原因がイテレータの比較なんだけど
55(3): デフォルトの名無しさん (ワッチョイ bbb3-rgA5) [sage] 2018/01/28(日) 20:42:03 ID:NzqukFwp0(2/2) AAS
すいません。途中で書き込んでしまいました。
以下のようなクラスを作ったのですが、
derivedがImp::baseを継承しているため、
インクルードの順番が固定されてしまいます。(Impliment.hが先でないといけない)
こういったクラスは使う人から見て嫌がられるでしょうか。
ご意見をいただけるとありがたいです。
Impliment.h
class Impliment
{
public:
class base {}
};
Interface.h
template<class Imp>
class Interface
{
private:
class derived : public Imp::base {}
}
62(5): デフォルトの名無しさん (ワッチョイ 9fbd-CNA0) [sage] 2018/02/04(日) 11:20:04 ID:r6E1M8790(1/4) AAS
質問ですが
「このクラスはバイト列としてコピーできる」ということを明らかにするために
明示的にコピーコンストラクタを書くとして、
どう書けば処理系に依存することなくデフォルトのコピーコンストラクタ以上の性能になることを保証できますか
(もしくは、「このクラスはバイト列としてコピーできる」ということを明示する構文はありますか)
63(4): 片山博文MZ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1) [sage] 2018/02/04(日) 11:26:54 ID:i7yJvuTcd(1) AAS
>>62
MyClass(const MyClass&) = default;
69(4): デフォルトの名無しさん (ワッチョイ 1f7e-wbgk) [sage] 2018/02/04(日) 13:52:58 ID:HBpG+TPK0(2/3) AAS
>>66なおさらtype_traitsで条件に合わなければコンパイルを失敗させればよい
122(3): デフォルトの名無しさん (ワッチョイ ddc3-saCW) [] 2018/02/12(月) 12:22:30 ID:sATukCOa0(1) AAS
Cでは名前空間っていうのをすごい扱っていた気がするんだけどC++は名前空間扱うことってないの?
一つのアプリケーションも完成させたことがないど素人の質問ですまんが
162(5): デフォルトの名無しさん (マクド FF6b-xgEu) [sage] 2018/02/17(土) 09:43:48 ID:Lqib7/b9F(1) AAS
以下のようにconst char*型の文字列でchar*型の変数を初期化したいときに
strcpyやstrlenを書かずにstd::stringを利用して短くかけないかと思うのですが
msvcだとエラーにならず、clang, gccだとdeleteでセグメンテーション違反になります。
どうすればより良い感じになるでしょうか?const_castはできれば使いたくないです。
#include <string.h>
#include <string>
#include <iostream>
int main()
{
const char* asdf = "asdf";
// char* psz2 = new char[strlen(asdf)+1];
// strcpy(psz2, asdf);
std::string *psz = new std::string(asdf);
char* psz2 = &(*psz)[0];
std::cout << psz2 << std::endl;
delete psz2;
return 0;
}
436(4): デフォルトの名無しさん (アウアウオー Sa9f-JHL/) [sage] 2018/03/06(火) 06:16:57 ID:HL6NWtm0a(1) AAS
newした配列がいつの間にか解放されてて、
プログラムの最後でdeleteすると必ずアクセスエラーで落ちるんですが、
newは勝手に解放されることあるんですか?
491(4): デフォルトの名無しさん (スプッッ Sd2a-dsCQ) [sage] 2018/03/08(木) 19:27:19 ID:i2S5Knpdd(1) AAS
linux windows両対応のコードを考えている最中の質問です
unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
y[0]から順にxの先頭ビットに入れたいのだけど
そういう時はどのようなコードになるのでしょうか
符号の問題で単純に24bitシフト+16bitシフト...みたいなことをすると期待の値にならないときが存在してます
496(3): デフォルトの名無しさん (ワッチョイ caaf-+ocK) [sage] 2018/03/09(金) 11:50:12 ID:XHk1xHdH0(1/2) AAS
ヘッダーファイルの関数定義から関数ポインタをtypedefする事は可能ですか?
C++98辺りのコンパイラです。
548(3): デフォルトの名無しさん (スップ Sd2a-A/UC) [sage] 2018/03/11(日) 20:16:22 ID:XWEx9Mlwd(3/3) AAS
>>529529(2): デフォルトの名無しさん (ワッチョイ da7e-uQtz) [sage] 2018/03/11(日) 09:08:13 ID:6KlfnVLZ0(3/5) AAS
意地悪するのはこの辺にしておいて
それはメタプログラミングでこいういうこともできるよ程度のものにすぎない
テンプレートメタプログラミングとはテンプレートを使ってソースコードを生成することだ
ソースコードを作るためのプログラミングだと思ってくれてかまわない
一般的な目的としてはジェネリックプログラミングを実現するために使われる
標準ライブラリではvectorからchoronoやtupleまでテンプレートメタプログラミングありきの設計になっている
実行時計算で答え算出してそれを貼った方が楽じゃね?
696(3): デフォルトの名無しさん (ワッチョイ 53bd-mA8b) [sage] 2018/03/21(水) 00:33:52 ID:7c9Ne47J0(1) AAS
ちょっなんで数億年の生物史史上はじめて
ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を
細分化するという元の木阿弥にしますか;;
藻前は
some_command | tee result.txt > some_file.bin
とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、
731(3): デフォルトの名無しさん (ワッチョイ a393-4ZrE) [sage] 2018/03/22(木) 19:57:57 ID:sR+euIcT0(1) AAS
>>726どの資料だったか覚えてないけど、演算子オーバーロードに関して
先生は「元の演算子の意味とかけ離れた挙動をさせるのは避けるべきだ」
みたいなことも書いてるよな。
まぁ、原則は指針であって絶対の規則じゃないわけだけど、
<< >> をビットシフトからストリーム入出力に振り替えておいて
どの口で言うか、このハゲッー! とか思ったり。
733(3): はちみつ餃子◆8X2XSCHEME (ワッチョイ b66f-zkh5) [sage] 2018/03/22(木) 20:22:42 ID:HExEyyqO0(2/2) AAS
>>731-732
まああれくらいのものになると、オブジェクトに追加で突っ込んでいくような動作が「元の演算子の意味」になっちゃってるよな。
そんなことより C++20 に入る予定のカレンダーでは日付を 2018y/mar/22 とか書けるらしくて、
これはさすがにクソやろ……。
これもいずれ普通に受け入れる気持ちになるだろうか。
740(3): デフォルトの名無しさん (アウアウウー Sac7-zkh5) [] 2018/03/23(金) 10:45:38 ID:COiOJTLla(1/4) AAS
「静的」、「動的」というのがよく分からないのですが、詳しく書いてある本はありますか?
ヒープ領域がどうたらとかいうのもよく分かりません。
スタックとかいうのもよく分かりません。
詳しく解説している本を教えてください。
902(3): デフォルトの名無しさん (ワッチョイ c1b3-tte4) [sage] 2018/03/29(木) 15:57:57 ID:or4Xspy50(1) AAS
何スレか前にもプロパティの議論あったんだけどね・・
少なくともgetter/setterを自動生成する、みたいなクソな機能ではないぞ
950(3): デフォルトの名無しさん (ワッチョイ 9368-uaFS) [sage] 2018/03/31(土) 04:29:43 ID:O6Ruc86y0(1) AAS
抽象クラス"Super"から派生した子クラス、"A", "B", "C"があったとします。
Super* obj1 = new A();
Super* obj2 = new B();
Super* obj3 = new C();
訳あって動的に作成したインスタンスobj1〜3を一度deleteしたのち
再び同じ子クラスでインスタンスを作成しようと思います。
obj2がクラスBのインスタンスであることが一目で分からない場合に
obj2がクラスBのインスタンスであることを突き止め、一度deleteし、
再度クラスBでインスタンスを作成する方法はあるでしょうか?
ちなみに必死に考えて考えついた方法ですが
クラスA, B, Cにそれぞれ「私はAクラスです」「私はBクラスです」みたいな
文字列を出力する共通メソッドをpublicで作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・
もっとスマートな方法はありますか?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.056s