В этом мы обсудим различные методы и приемы печати вектора в C++.
Что такое Vector?
В C++ вектор относится к переменной, используемой для хранения нескольких значений одного и того же типа. Думайте о векторе как о реализации массива.
Однако, в отличие от массива, вектор является динамическим и может увеличиваться или уменьшаться в размере в зависимости от наших требований.
Создать вектор С++
В C++ векторы определяются в файле заголовка вектора, входящем в состав стандартной библиотеки C++.
Чтобы использовать векторы в C++, нам нужно включить заголовочный файл, как показано ниже:
#include <vector>
Как только мы подключим заголовочный файл, мы можем объявить вектор, используя синтаксис, показанный ниже:
std::vector<T> vector_name
Параметр T в приведенном выше синтаксисе относится к любому примитивному типу данных C++.
Например, чтобы объявить вектор int, мы можем сделать:
#include <iostream>
#include <vector>
int main() {
std::vector<int> my_vector = {1,2,3,4,5};
}
В приведенном выше примере мы объявляем вектор с именем my_vector типа int. Он содержит элементы, определенные внутри фигурных скобок.
Доступ к векторным элементам C++
В C++ мы можем получить доступ к элементам вектора, используя метод at(). Функция позволяет нам указать индекс и получить значение по этому индексу.
Рассмотрим пример ниже:
#include <iostream>
#include <vector>
int main() {
std::vector<int> my_vector = {1,2,3,4,5};
std::cout << my_vector.at(1) << std::endl;
}
В приведенном выше примере кода мы используем функцию at() для доступа к элементу с индексом 1 вектора my_vector.
Если мы скомпилируем и запустим приведенный выше код, мы должны увидеть вывод, как показано ниже:
$ g++ vect.cpp
$ ./a.out
2
Печать вектора — для цикла С++
Мы можем перебирать индекс каждого вектора, используя функцию at() и цикл for, и возвращать соответствующий элемент.
Возьмите иллюстрацию, показанную ниже:
#include <iostream>
#include <vector>
intmain() {
std::vectormy_vector = {1,2,3,4,5};
for (inti = 0; i<my_vector.size(); i++) {
std::cout<< my_vector.at(i) <<std::endl;
}
}
В приведенном выше примере мы используем функцию size() для получения размера вектора. Это не позволяет нам вручную угадывать размер вектора и получать доступ к элементам за пределами границ.
Затем мы используем каждый индекс вектора в функции at(), чтобы получить соответствующий элемент.
Приведенный выше код должен вернуть:
$ g++ vect.cpp
$ ./a.out
1
2
3
4
5
Вместо функции at() вы можете использовать векторную индексацию, как показано ниже:
#include <iostream>
#include <vector>
int main() {
std::vectormy_vector = {1,2,3,4,5};
for (inti = 0; i<my_vector.size(); i++) {
std::cout<<my_vector[i] <<std::endl;
}
}
В приведенном выше примере используется нотация индексации [] для доступа к элементу по указанному индексу.
Вектор печати С++ — For_each
Другой стандартный метод печати вектора — использовать итератор, предоставленный в методе for_each. Это предусмотрено в библиотеке алгоритмов.
Пример кода показан ниже:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vectormy_vector = {1,2,3,4,5};
for_each(my_vector.begin(), my_vector.end(), [](constint& n) {
std::cout<< n <<std::endl;
});
}
Метод for_each позволяет нам применять функцию к каждому элементу вектора для определенного диапазона. В данном случае от начала до конца вектора.
Вектор печати С++ — std::copy()
Мы также можем использовать метод std::copy() из библиотеки алгоритмов, чтобы скопировать элементы вектора в стандартный вывод.
Иллюстрация показана ниже:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
intmain() {
std::vectormy_vector = {1,2,3,4,5};
copy(my_vector.begin(), my_vector.end(), std::ostream_iterator(std::cout, » «));
}
Вектор печати C++ — Overload std::ostream::operator<<
Мы также можем использовать оператор вставки для печати вектора. Это работает путем перегрузки оператора вставки для распознавания объекта ostream и вектора.
Возьмите иллюстрацию примера ниже:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
std::ostream&operator<< (std::ostream& out, conststd::vector&vec) {
for (size_ti = 0; i<vec.size(); i++) {
out <<vec[i];
if (!vec.empty())
out <<» «;
}
out <<«»;
return out;
}
intmain() {
std::vectormy_vector = {1,2,3,4,5};
std::cout<<my_vector;
}
Если мы скомпилируем и запустим приведенный выше код, он должен вернуть элементы массива, как показано ниже:
$ g++ vect.cpp
$ ./a.out
1 2 3 4 5
Заключение
В этой статье мы обсудили несколько методов печати вектора в C++.