目次
2。イテレーターの使用
3。STD std::copy std::ostream_iteratorを使用して使用します
4。文字列またはその他のタイプのベクトルの印刷
5。再利用性のためのヘルパー関数
ボーナス:コンマ付きのきれいなプリント
ホームページ バックエンド開発 C++ cでベクトルを印刷する方法

cでベクトルを印刷する方法

Aug 06, 2025 am 08:25 AM
c++ vector

スコープベースのループ(C 11以降)を使用して、ベクトル要素を明確に通過および印刷します。 2。より多くの制御を必要とする古いバージョンのCまたはCの古いバージョンに適しているため、反復器を使用します。 3。STD:: copyとstd :: osttream_iteratorを組み合わせたSTLスタイルのコンマ集合印刷方法。 4.同じ方法は、文字列などの他の印刷可能なタイプに適しています。 5.印刷関数の多重化を実現するために、テンプレート関数を記述できます。 6.インデックスと状態の判断を通じて、コンマ分離の美しい出力を達成できます。通常、ループ用の範囲ベースは、読みやすさと効率の間の最良のバランスをとるため、通常推奨されます。

cでベクトルを印刷する方法

Cにベクトルを印刷することは、一般的な方法を知ったら簡単です。ニーズとCバージョンに応じて、これができる方法は次のとおりです。

cでベクトルを印刷する方法

1.ループに範囲ベースの使用(C 11以降)

これは、最も読みやすく、一般的に使用される方法です。

 #include <iostream>
#include <vector>

int main(){
    std :: vector <int> vec = {1、2、7、42、99};

    for(const auto&element:vec){
        std :: cout << element << "";
    }
    std :: cout << std :: endl;

    0を返します。
}
  • const auto&各要素のコピーを回避します。
  • フォーマットに必要に応じて、スペースまたは新しいラインを追加します。

2。イテレーターの使用

古いC基準で作業している場合や、より多くの制御が必要な場合に便利です。

cでベクトルを印刷する方法
 #include <iostream>
#include <vector>

int main(){
    std :: vector <int> vec = {10、20、30、40};

    for(auto it = vec.begin(); it!= vec.end(); it){
        std :: cout << *it << "";
    }
    std :: cout << std :: endl;

    0を返します。
}
  • auto 、イテレーター型宣言(C 11)を簡素化します。
  • 価値を取得するために*itとの抑制。

3。STD std::copy std::ostream_iteratorを使用して使用します

より「STLスタイル」アプローチ、簡単な印刷に適しています。

 #include <iostream>
#include <vector>
#include <Iterator>
#include <algorithm>

int main(){
    std :: vector <int> vec = {5、10、15、20};

    std :: copy(vec.begin()、vec.end()、
              std :: ostream_iterator <int>(std :: cout、 ""));
    std :: cout << std :: endl;

    0を返します。
}
  • <iterator>および<algorithm>を含む必要があります。
  • ostream_iteratorの最後の議論は、区切り文字(スペース、コンマ、ニューラインなど)です。

4。文字列またはその他のタイプのベクトルの印刷

同じ方法が印刷可能なタイプで機能します:

cでベクトルを印刷する方法
 std :: vector <std :: string> words = {"hello"、 "world"、 "c"};

for(const auto&word:words){
    std :: cout << word << "";
}

出力: hello world C


5。再利用性のためのヘルパー関数

テンプレート関数を作成して、任意のベクトルを印刷します。

 #include <iostream>
#include <vector>

テンプレート<typename t>
void printvector(const std :: vector <t>&vec){
    for(const auto&item:vec){
        std :: cout << item << "";
    }
    std :: cout << std :: endl;
}

int main(){
    std :: vector <int> numbers = {1、2、3};
    std :: vector <std :: string> words = {"a"、 "b"};

    printvector(numbers);
    printvector(words);

    0を返します。
}

ボーナス:コンマ付きのきれいなプリント

要素間のコンマが必要な場合:

 std :: vector <int> vec = {1、2、3、4};

for(size_t i = 0; i <vec.size(); i){
    std :: cout << vec [i];
    if(i!= vec.size() -  1)std :: cout << "、";
}
std :: cout << std :: endl;

出力: 1, 2, 3, 4


基本的に、スタイルとCバージョンに合った方法を選択してください。通常、ループ用の範囲ベースは、明確さと効率の最良のバランスです。

以上がcでベクトルを印刷する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

c折りたたみ式の例 c折りたたみ式の例 Jul 28, 2025 am 02:37 AM

c folderexpressionsは、c 17によって導入された機能であり、変数パラメーターテンプレートの再帰操作を簡素化します。 1。左折(args ...)合計(1,2,3,4,5)が15を返すなど、左から右へ。 2。論理的および(args && ...)すべてのパラメーターが真であるかどうかを決定し、空のパケットがtrueを返します。 3。使用(std :: cout

c文字列の例へのchar配列 c文字列の例へのchar配列 Aug 02, 2025 am 05:52 AM

答えは次のとおりです。STD:: STRINGコンストラクターを使用して、CHARアレイをSTD :: Stringに変換します。配列に中間体「\ 0」が含まれている場合、長さを指定する必要があります。 1。「\ 0」で終わるcスタイルの文字列の場合、std :: stringsstr(chararray)を使用します。コンバージョンを完了するには。 2.文字配列に中央の「\ 0」が含まれているが、最初のn文字を変換する必要がある場合は、std :: stringstr(chararray、length)を使用します。長さを明確に指定します。 3.固定サイズの配列を処理するときは、「\ 0」で終了してから変換してください。 4。Str.Assign(Chararray、Chararray strlを使用します

cベクトルの例で検索します cベクトルの例で検索します Aug 02, 2025 am 08:40 AM

Cのベクトル要素を見つける最も一般的な方法は、STD :: findを使用することです。 1。STD:: ITERATORの範囲とターゲット値で検索するために検索します。返されたイテレーターがend()に等しいかどうかを比較することにより、それが見つかったかどうかを判断できます。 2。カスタムタイプまたは複雑な条件の場合、std :: find_ifを使用する必要があり、述語関数またはlambda式を渡す必要があります。 3.文字列などの標準タイプを検索すると、ターゲット文字列を直接渡すことができます。 4.各検索の複雑さはO(n)であり、小規模データに適しています。頻繁に検索するには、std :: setまたはstd :: unordered_setの使用を検討する必要があります。この方法は、シンプルで効果的で、さまざまな検索シナリオに広く適用されます。

LinuxでGDBを使用してCアプリケーションをデバッグするためのJSON設定は何ですか? LinuxでGDBを使用してCアプリケーションをデバッグするためのJSON設定は何ですか? Aug 04, 2025 am 03:46 AM

todebugac applicationsinggdbinvisualstudiocode、configurethelaunch.jsonfilecorectly; keysettingsincludespecifiedtheexexecutable with "program"、「gdb」に「gdb」と「type」を「cppdbg」に設定し、「ex」を使用します

Cエンディアンネスチェックの例 Cエンディアンネスチェックの例 Jul 30, 2025 am 02:30 AM

システムのエンディアンネスは、さまざまな方法で検出できます。最も一般的に使用されるのは、組合またはポインターの方法です。 1。ユニオンの使用:UINT32_Tを0x010203044に割り当てます。最低のアドレスバイトが0x04の場合、それは小さなエンディアンであり、0x01の場合、それは大きなエンディアンです。 2。ポインター変換を使用:UINT16_Tを0x0102に割り当て、UINT8_Tポインターを介してバイトの順序を読み取り、[0] == 0x02および[1] == 0x01は小さなエンディアンです。 3。コンパイル時間検出:constexpr関数を定義して、(char)&int変数が1であるかどうかを判断し、ifconStexprを組み合わせてコンピレーション期間中のエンド順序を決定します。 4。ランタイムマクロカプセル化:使用(char*)&amp

C Mutexの例 C Mutexの例 Aug 03, 2025 am 08:43 AM

STD :: Mutexは、データ競争を防ぐために共有リソースを保護するために使用されます。この例では、STD :: lock_guardの自動ロックとロック解除を使用して、マルチスレッドの安全性を確保します。 1。STD:: MUTEXおよびSTD :: LOCK_GUARDを使用すると、ロックの手動管理によってもたらされる異常なリスクを回避できます。 2。マルチスレッドを変更する際には、カウンターなどの共有変数をMutexで保護する必要があります。 3.例外の安全性を確保するために、RAIIスタイルのロック管理をお勧めします。 4.固定順序でデッドロックと複数のロックを避けます。 5.共有リソースへのマルチスレッドアクセスのシナリオは、Mutex同期を使用する必要があり、最終プログラムは予想される10000および実際の出力を正しく出力します:10000。

Cブーストライブラリの例 Cブーストライブラリの例 Jul 30, 2025 am 01:20 AM

ブーストライブラリをインストールします。2。boost.asioを使用してDNS解像度のコードを書き込み、3。boost_systemライブラリをコンパイルしてリンクします。4。プログラムを実行して、www.google.comによって解析されたIPアドレスを出力します。この例は、CでのBoost.asioがネットワークプログラミングを簡素化し、IO_ContextおよびTCP :: Resolverを介してクロスプラットフォーム、タイプセーフ同期DNSクエリを実装し、IPv4およびIPv6アドレス解像度をサポートし、最後にすべての解像度結果を印刷する方法を示しています。

c反復中のベクトルから消去します c反復中のベクトルから消去します Aug 05, 2025 am 09:16 AM

要素を削除するときに反復している場合は、故障したイテレーターの使用を避ける必要があります。正しい方法は、it = vec.erase(it)を使用し、earseによって返された有効なイテレーターを使用してトラバースを続けることです。 batchバッチ削除に推奨される「消去除去」イディオム:vec.erase(std :: remove_if(vec.begin()、vec.end()、条件)、vec.end())、安全で効率的です。 reverse逆イテレータを使用して背面から前面に削除できますが、ロジックは明確ですが、条件方向に注意を払う必要があります。結論:消去リターン値でイテレーターを常に更新し、障害のあるイテレーターの操作を禁止します。そうしないと、未定義の動作が生じます。

See all articles