printМассивы, строки и структуры

printИспользование vector из С++

В C++ рекомендуется вместо массивов использовать vector.

Плюсы:

  • размер – это часть вектора (в С для размера используемой части нужна дополнительная переменная)
  • можно изменить размер в любой момент (в С размер нельзя изменять после определения)
  • есть присваивание (в С используем memcpy)
  • есть метод, проверяющий корректность индекса при обращении к элементу (в С пишем проверку вручную)
  • есть методы, упрощающие действия над вектором (в С используем последовательность вызовов memmove)

Определение вектора:

vector<int> a; // 0 элементов
vector<double> b(10); // 10 элементов
vector<double> с(10, 0.0); // 10 элементов, начальное значение 0
vector<int> d{5, 10, 7}; // 3 элемента, начальное значение 5, 10, 7

Действия с векторами:

int n=b.size(); // текущий размер

// доступ к элементам
b[0]=c[4]; // без проверки
b.at(0)=c.at(4); // с проверкой выхода за границы
с.back()=b.front(); // последний и первый элементы

a=d; // присваивание

for(int i=0;i<a.size();++i)
  a[i]+=2; // обработка элементов вектора

// изменение размера
a.resize(100);  // до 100 элементов
a.clear(); // опять 0 элементов
b.resize(20,2.0); // до 20 элементов, всем новым элементам присвоить 2.0

c.push_back(1.5); // добавить новое значение в конец
c.pop_back(); // удалить последнее значение

// вставка в середину:
с.insert(c.begin()+pos,1.5); // одно значение
с.insert(c.begin()+pos,5,1.5); // 5 значений
с.insert(c.begin()+pos,b.begin(),b.end()); // из другого вектора

// удаление из середины:
c.erase(c.begin()+pos); // одно значение
c.erase(c.begin()+pos,c.end());// все элементы с pos до конца
loading