Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
В качестве первого введения в стандартную библиотеку С++ рассмотрим востребованные на практике способы обработки массивов и строк с использованием типов vector и string. В данном разделе мы не ставим целью дать строгое определение таких понятий как классы, методы классов, шаблоны, итераторы и т.д. Вся эта проблематика будет изложена подробно в следующих разделах пособия. Но понять и оценить возможности стандартной библиотеки С++ при работе с массивами и строками можно уже и на этом этапе обучения.
Сначала дадим краткое введение в терминологию, чтобы в дальнейшем называть все понятия своими именами.
Класс – сложный тип данных, определяемый пользователем (разработчиком программы или библиотеки). Элементами класса как сложного типа данных являются переменные и функции. Функции, определённые внутри класса, называются методами класса, а переменные – полями. К методам класса обычно обращаются, используя составное имя:
Имя переменной класса. Имя метода
Шаблонный класс в С++ (его называют также параметризованным типом) служит основой для создания множества классов, которые отличаются только типом своих элементов.
Шаблонный класс vector
Шаблонный класс vector является шаблоном для формирования векторов с конкретными типами элементов. Синтаксис описания рассмотрим на примерах:
vector<int> x; // объявили вектор без указания размеров
vector<int> y(10);// вектор из 10 элементов, инициализированных нулями
vector<int> z(y); // вектор z – копия y
vector<int> z=y; // то же самое: вектор z – копия y
Работать с вектором можно так же, как с обычным массивом, т.е. доступ к элементам осуществляется по их индексам с использованием квадратных скобок. Несколько методов могут оказаться полезными.
push_back(значение) – помещает заданное значение в конец вектора
pop_back() – удаляет последний элемент из вектора
size() – возвращает размер вектора
empty() – проверяет вектор на пустоту
clear() – очищает вектор
begin() – возвращает указатель на начало вектора
end() – возвращает указатель на элемент, следующий за последним.
Если использовать метод push_back для заполнения вектора, то никаких проблем с памятью вообще не возникнет – она будет выделяться автоматически по мере необходимости.
В следующем примере вектор заполняется случайными числами с помощью функции random_shuffle, которая выполняет случайное перемешивание последовательности натуральных чисел 1,2,…,n. Затем выполняется сортировка при помощи стандартной функции sort.
// Пример 1.12 – демонстрация шаблонного типа vector
#include <iostream>
#include <vector> // содержит шаблон vector
#include <algorithm> //алгоритмы случ.перемешивания и сортировки
using namespace std;
int main() {
vector<int> v;
int n,i;
cout<<"n=?"; cin>>n;
for (i=0;i<n;i++) {
v.push_back(i+1);// заполнение числами 1,2,3,...,n
cout<<v[i];//к элементам вектора можно обращаться по индексу
} cout<<endl;
// случайное перемешивание
random_shuffle(v.begin(), v.end());
for (i=0;i<v.size();i++) cout<<v[i]; cout<<endl;
// а теперь - сортировка
sort(v.begin(), v.end());
for (i=0;i<v.size();i++) cout<<v[i]; cout<<endl;
system("pause"); return 0;
}
Класс string
Обрабатывать строки, используя класс string, пожалуй, проще и удобнее, чем использовать встроенные строки с завершающим нулём.
Для ввода переменных этого типа можно использовать функцию getline.
getline(cin, s);
Здесь s — имя вводимой переменной типа string.
При описании переменной типа string можно сразу её инициализировать.
Например: string v("Hello");
Доступ к элементам строки типа string осуществляется стандартным образом через индекс. Над строками типа string определены следующие операции:
· присваивания, например s1=s2;
· объединения строк (s1+=s2 или s1=s1+s2) — добавляет к строке s1 строку s2, результат сохранится в строке s1;
· сравнения строк на основе лексикографического порядка: s1=s2, s1!=s2, s1<s2, s1>s2, s1<=s2, s1>=s2 — результатом будет логическое значение;
При обработке строк типа string можно использовать следующие методы (методов у класса string много, поэтому здесь представлены, на наш взгляд, используемые наиболее часто). Пусть s – произвольная строка, тогда к каждому из методов обращаемся так:
s. имя_метода(параметры,_если_есть).
· substr(pos, length) — возвращает подстроку из строки s, начиная с позиции pos длиной length символов;
· empty() — возвращает значение true, если строка s пуста, false — в противном случае;
· size(), length() – количество символов в строке (длина строки);
· insert(pos, s1) — вставляет строку s1 в строку s, начиная с позиции pos;
· erase(pos, length) — удаляет из строки s подстроку длиной length символов, начиная с позиции pos;
· find(s1, pos) — возвращает номер первого вхождения строки s1 в строку s, поиск начинается с номера pos, параметр pos может отсутствовать, в этом случае поиск идет с начала строки;
В качестве примера приведём последний (четвёртый!) вариант удаления пробелов из строки (примеры 1.7,1.8, 1.10). По лаконичности и наглядности текста, этот вариант, пожалуй, самый лучший. Но по эффективности безусловный лидер – вариант 1.8, в котором реализован собственный алгоритм обработки строки как массива символов.
//Пример 1.13 – удаление из строки пробелов
// с использованием типа string и его методов
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s; int n=0;
cout<<"?"; getline(cin, s);
while ((n=s.find(" "))>=0) s.erase(n,1);
cout << s << endl;
system("pause"); return 0;
}
|
|
|
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!