タグ付けされた質問 「std」

C ++標準ライブラリとその名前空間。[c ++]と組み合わせて使用​​します。

30
なぜ「ネームスペースstdを使用する」のですか?悪い習慣と考えていますか?
私は書くことを他人に言われてきたusing namespace std;コードでは間違っている、と私は使うべきであるとstd::coutし、std::cin代わりに直接。 なぜusing namespace std;悪い習慣と見なされますか?非効率的ですか、あいまいな変数(std名前空間内の関数と同じ名前を共有する変数)を宣言するリスクがありますか?パフォーマンスに影響しますか?


5
「STL」と「C ++標準ライブラリ」の違いは何ですか?
誰かがもたらしたこの記事をクレームはというのが私の注意に(私は言い換えだ) STL項は全体のC ++標準ライブラリの代わりに、SGIのSTLから採取された部分を参照するために悪用されています。 (...)STL(SGIで設計された)をまだほとんど使用していないという事実にもかかわらず、「STL」を指します。 C ++標準ライブラリの一部はSTLの一部に基づいており、多くの人々(複数の作者や悪名高いエラーに悩まされているcplusplus.comを含む)が「STL」と呼んでいるのはこれらの部分です。ただし、これは不正確です。実際、C ++標準では「STL」については言及されておらず、2つのコンテンツには違いがあります。 (...)「STL」は、SGI STLに基づくstdlibのビットを参照するために使用されることはほとんどありません。人々はそれが全体の標準ライブラリだと思っています。CVに配置されます。そしてそれは誤解を招くものです。 私はC ++の歴史についてほとんど何も知らないので、記事の正確さを判断できません。STLという用語は使用しないでください。それともこれは孤立した意見ですか?

12
繰り返し処理中にstd :: listから要素を削除できますか?
次のようなコードがあります。 for (std::list<item*>::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)->update(); //if (!isActive) // items.remove(*i); //else other_code_involving(*i); } items.remove_if(CheckItemNotActive); 再びリストをたどらないようにするために、更新後すぐに非アクティブなアイテムを削除したいと思います。しかし、コメント化された行を追加すると、i++「List iterator not incrementable」にアクセスしたときにエラーが発生します。forステートメントで増加しない代替案をいくつか試しましたが、何も動作しませんでした。 std :: listを歩いているときにアイテムを削除する最良の方法は何ですか?
239 c++  list  std 

4
なぜemplace_backの代わりにpush_backを使用するのですか?
C ++ 11ベクトルには新しい関数がありますemplace_back。push_backコンパイラの最適化に依存してコピーを回避するとは異なり、emplace_back完全な転送を使用して引数をコンストラクターに直接送信し、オブジェクトをインプレースで作成します。私にemplace_backは、すべてのpush_backことができるように思えますが、場合によっては、それがうまくいくこともあります(悪くなることはありません)。 どのような理由で使用する必要がありますpush_backか?
232 c++  c++11  std 

3
coutはstdのメンバーではありません
複数のファイルやヘッダーファイルなどを使用して練習しています。そのため、このプロジェクトでは2つの数値を取り、それらを加算しています。ものすごく単純。 これが私のファイルです: main.cpp #include <iostream> #include "add.h" int main() { int x = readNumber(); int y = readNumber(); writeAnswer(x + y); return(0); } io.cpp int readNumber() { int x; std::cout << "Number: "; std::cin >> x; return x; } void writeAnswer(int x) { std::cout << "Answer: "; std::cout << x; …
199 c++  io  std  member  cout 


16
Cファイルを1行ずつ読み取る
ファイルから行を読み取るために、この関数を書きました。 const char *readLine(FILE *file) { if (file == NULL) { printf("Error: file pointer is null."); exit(1); } int maximumLineLength = 128; char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength); if (lineBuffer == NULL) { printf("Error allocating memory for line buffer."); exit(1); } char ch = getc(file); int count = 0; …
184 c  file-io  line  std 

16
カスタムC ++アロケーターの説得力のある例?
std::allocatorカスタムソリューションを採用する理由は何ですか?正確性、パフォーマンス、スケーラビリティなどのために絶対に必要な状況に遭遇しましたか?本当に賢い例はありますか? カスタムアロケーターは、常に標準ライブラリの機能であり、あまり必要がありませんでした。ここのSOの誰かが彼らの存在を正当化するための説得力のある例を提供できるかどうか疑問に思っていました。

7
std :: stringを使用したprintf?
私はそれstringがstd名前空間のメンバーであることを理解しているのに、なぜ以下が発生するのですか? #include <iostream> int main() { using namespace std; string myString = "Press ENTER to quit program!"; cout << "Come up and C++ me some time." << endl; printf("Follow this command: %s", myString); cin.get(); return 0; } プログラムが実行されるたびに、myString上記の出力のように、ランダムに見える3文字の文字列が出力されます。
157 c++  string  namespaces  printf  std 

8
反復中のstd :: setからの要素の削除
セットを調べて、事前定義された基準を満たす要素を削除する必要があります。 これは私が書いたテストコードです: #include <set> #include <algorithm> void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::set<int> numbers(initNum, initNum + 10); // print '0 1 2 3 4 5 6 7 …



7
stdlibとCのカラー出力
カラー出力が必要なシンプルなアプリケーションを作成しています。出力をemacsやbashのように色付けするにはどうすればよいですか? 私のアプリケーションはUNIXシステム専用であるため、Windowsは気にしません。
125 c  colors  std  stdio 

8
C ++でCヘッダーを使用する場合、std ::またはグローバル名前空間の関数を使用する必要がありますか?
Cは、正確ではありませんが、C ++のサブセットです。そのため、名前を少し(stdio.hto cstdio、stdlib.hto cstdlib)変更することで、C ++でほとんどのC関数/ヘッダーを使用できます。 私の質問は、実際には一種の意味論です。C ++コード(GCCコンパイラの最新バージョンを使用)では、呼び出すことができますがprintf("Hello world!");、std::printf("Hello world!");まったく同じように機能します。そして、私が使用しているリファレンスでは、としても表示されstd::printf("Hello world!");ます。 私の質問は、std::printf();C ++で使用する方が良いですか?違いはありますか?
113 c++  language-lawyer  std 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.