C++相談室 part153
レス数が1000を超えています。これ以上書き込みはできません。
CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。 >>792
それはちょっと古臭いお馬鹿な手法でしょう
正しいやりかたは、
・呼び出し側が呼び出され側に格納エリアを提供する‥‥@
・呼び出し側が確保するべきサイズは@の前に別途問い合わせする CにはCで
#define APPBUFSZ (十分でかい整数値)
void foo() {
char buf[APPBUFSZ]; // buf[]はスタック上にとられる配列(重要
if (!func(buf, sizeof(buf))) { // 第2引数は要素数の意味とするならsizeof(buf) / sizeof([0])
バッファサイズ不足等のエラー
}
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない CSSはDOMの一部でありかつ意味と表記の分離の必要からCSSになった
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象 >>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな >>955
何が黄金なのかさっぱりわからんが…
どこでそれが黄金パターンとされているかの出典だけでも頼む 定番は>>953だろう。
事前にサイズを求めるコストがバカにならないという場合だけ別案を検討するくらいで。 大抵の場合は「事前にサイズを求める」=やり直しになりそうなんだけど >>958
左様よほど意図しない事象でも起きない限りエラー処理に行かないぐらい大き目にとる
スタック上に領域をとる場合、時間コストも空間コストもゼロとみなせるからそれで構わない
再帰呼び出しのようなきわめて深い関数呼び出し階層になるときぐらいしか問題は生じない
というわけで、プログラミングしたいこと/すべきことに対するちょっとした洞察と
アーキテクチャーに関する理解さえあれば、言うほど非効率でも不合理でもないことがわかるはず… >953
確保すべきサイズを問い合わせたときと確保して呼び出した時に必要サイズが変わっていないか気になって夜しか眠れない
(リトライしてもリトライ回数が適切かどうか気になって布団以外で眠れない) std::make_sharedにインターフェースクラスを継承したクラスを渡したいんですがエラーになりました
これは生ポインタ使えと言うことでしょうか?
https://ideone.com/QUYTgX >>965
デストラクタとコンストラクタの定義書いたらコンパイルできました
どうもありがとう chromiumのソースみると全面的にstd::unique_ptrを使ってるので、少なくともC++11 以降。 newしたクラスをdeleteすればクラス内で保持した変数のメモリも自動的に解放されるのでしょうか? >>969
「クラス内で保持」の仕方による。
deleteに伴って各メンバ変数のデストラクタが呼び出されるので、自動的に解放されるようにすることはできる。 所有してるメモリなら解放されて欲しいけど借用してるメモリは解放されちゃ困るででょ めちゃくちゃ初歩的な質問で申し訳ないのですが文字で「"」を出力したい場合はどうするのですか?
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね… https://ideone.com/37sNvH
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません! >>975
cout << R"(cout<<"これ→"←"<<endl;)"; cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。 c++で出力出来ない文字とかあるんですか?
>>981
この書き方ならなんでも出力出来るんですかね?
cout<<"これ→"←"endl;)と出力したい時
cout << R"(cout<<"これ→"←"<<endl;))";
でもいけるんですか?
)が気になりますが… >>987
すいません出来ました
fuckという単語なので嘘かと思ってスルーしていました
>>982
ありがとうございます >>947
cppは論理演算子が少ないからに優しくないから先のレスのようにチマチマ等価な冗長な論理を書くしかないのが面倒だよね…
not-andなんだからnand演算子(=joint denial(↑)、論理用語)で書けりゃいいのに(もちろん裸cppで C++界隈のオッサンは普通に4文字とか猥語とかバンバン使ってちゃんとした説明するから気をつけろ template <typename A, typename B>
inline constexpr
bool nand(A&& a, B&& b)
{
return !(A == 1 && B == 1);
} プリプロセッサで演算子増やせないかな?
無理かな? マクロの識別子は英数字下線だけだかんな
あ、でも英数字下線の演算子もどきならできるね
template <typename R, typename A>
R Static_cast(A&& a) { return a; } そんなに演算子を増やしたいか?
関数でそんなに不都合には感じないが。 NANDが演算子で書けたからって別に理解しやすくもないので、いらない このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 18時間 28分 12秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。