1. ホーム
  2. C++

C++プリントベクター

2022-02-11 19:59:52
<パス

1次元ベクトルを印刷する

方法1:基本的なforループを使用する

#include 

#include 


int main() {
    // initial a vector
    std::vector<int> arrays{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    for(int i = 0; i < arrays.size(); ++i) {
        std::cout << arrays[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}


方法2:for eachループメソッドを使用する

#include 

#include 


int main() {
    // initial a vector
    std::vector<int> arrays{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    for(auto array: arrays) {
        std::cout << array << " ";
    }
    std::cout << std::endl;

    return 0;
}


方法3:イテレータメソッドを使用する

#include 

#include 


int main() {
    // initial a vector
    std::vector<int> arrays{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

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

    return 0;
}


方法4:ostream_iteratorを使用する

#include 

#include 

#include 


int main() {
    // initial a vector
    std::vector<int> arrays{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    std::ostream_iterator<int> it(std::cout, " ");
    std::copy(arrays.begin(), arrays.end(), it);

    return 0;
}


方法5: std::for_each

#include 

#include 

#include 


int main() {
    // initial a vector
    std::vector<int> arrays{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    std::for_each(arrays.begin(), arrays.end(), [](const auto &i){std::cout << i << " "; });
    std::cout << "\n";

    return 0;
}


<ブロッククオート

上記のメソッドはすべて、最後に余分なスペースを表示します。余分な文字を表示せず、任意の文字列をセパレータとして使用できる関数を以下に示します。

#include 

#include 


template <typename T>
std::ostream& operator<<(std::ostream& out, const std::vector<T>& ve) {
  out << "[";
  char delim[3] = {'\0', ' ', '\0'};
  for (auto& item : ve) {
    out << delim << item;
    delim[0] = ',';
  }
  out << "]\n";
  return out;
}

template <typename T>
void print(const std::vector<T>& ve, std::string delimiter = ",") {
  std::cout << "[";
  std::string delim;
  if (delimiter == " ")
    delimiter.clear();
  for (auto& item : ve) {
    std::cout << delim << item;
    delim = delimiter + " ";
  }
  std::cout << "]\n";
}

int main() {
  std::vector vec{0, 1, 2, 3, 4, 5, 6, 7};
  print(vec);
  print(vec, ";");
  print(vec, "");
  print(vec, " ");
  std::cout << vec;
  return 0;
}


2Dベクターを印刷する

方法1:インデックス・ループ

#include 

#include 


int main() {
    // initial a vector
    std::vector<std::vector<int>> arrays{ {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};

    for(int i = 0; i < arrays.size(); ++i) {
        for(int j = 0; j < arrays[0].size(); ++j) {
            std::cout << arrays[i][j] << " ";
        }
        std::cout << "\n";
    }

    return 0;
}


方法2:各ループのために

#include 

#include 


int main() {
    // initial a vector
    std::vector<std::vector<int>> arrays{ {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};

    for(auto &array: arrays) {
        for(auto &arr: array ) {
            std::cout << arr << " ";
        }
        std::cout << "\n";
    }

    return 0;
}


方法3:イテレータポインタを使用する

#include 

#include 


int main() {
    // initial a vector
    std::vector<std::vector<int>> arrays{ {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};

    for(auto ita = arrays.begin(); ita ! = arrays.end(); ++ita) {
        for(auto it = ita->begin(); it ! = ita->end(); ++it) {
            std::cout << *it << " ";
        }
        std::cout << "\n";
    }

    return 0;
}