問題タブ [c++98]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ヒープに割り当てられたベクターで push_back を使用する
関数内に文字列ベクトルを作成し、ヒープにメモリを割り当てたいと考えています。このために私は使用しています
vector<string>* residuetable = new vector<string>();
私がやろうとすると
&residuetable.push_back(modulo((exponentiate("2", exponent02)), modulus));
つまり、 push_back関数を使用して、複数の関数呼び出しからの戻り値をベクターに追加しようとすると、コンパイル時エラーが発生します。
request for member 'push_back' in 'residuetable', which is of non-class type 'std::vector<std::string, std::allocator<std::string> >*
この問題を解決し、ヒープに割り当てられたベクトルの最後に関数呼び出しの結果を追加するにはどうすればよいですか?
c++ - std::vector のイテレータにポインタを渡すことはできますか
次のコードに出くわし、頭の中でいくつかの疑問が生じました
where bytes is QByteArray
とbytes.constData()
returnconst char*
ここでベクターのコンストラクターについて調べましたが、この説明に適していると思われる唯一のコンストラクターは
今私の質問は:
1-ベクターの反復子にポインターを渡すことは可能ですか? なぜbytes.constData() + bytes.size()
ですか?たとえば、後でバイトに変更を加えた場合、これはコピーを作成しますか? buf に影響しますか?
c++ - C++98 中かっこ const スカラーの初期化
よくわからないコードに出くわしました。これを簡略化したバージョンを次に示します。
このコードは C++98 モードの GCC でコンパイルされますが、Clang ではコンパイルされません。Clang は次のエラーを生成します。
私が理解している限り、int
中括弧ありとなしの初期化は同等である必要があります。Clangi
は に正しく初期化され42
ますが、それがコンパイル時の定数であるとは考えていません。
このコードは、C++11 モードで適切にコンパイルされます。
j
コンパイル時定数として扱われる理由とそうでない理由はi
ありますか? それとも単に Clang のバグですか?
更新:この問題について、LLVM バグ トラッカーでチケットをオープンしました。
c++ - Project euler #25 に対するブルート フォース ソリューションの改善
私は最近、この Project Euler Problem #25 に出くわしました:
第 12 項 F12 は、3 桁を含む最初の項です。
フィボナッチ数列で最初に 1000 桁になる項は?
私は C++98 を知っているだけで、他のプログラミング言語は知りません。私はそれを解決しようとし、c++ 11 のサポートを得るために変更を加えました。
働く:
これが力ずくであることはわかっていますが、答えを得るためにもっと効率的にすることはできますか?
どんな助けでも大歓迎です。
編集:
PaulMcKenzieが提案した Binet の式を使用し、次のように実装します。
出力: 4780.187012
上記の 1 行目を次のように変更します。
出力: 4781.859375
ここで考えられるエラーは何ですか?