Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


—писок (list)




ѕоддерживает быстрое удаление и вставку. Ѕыстрый произвольный доступ не поддерживаетс€. Ѕыстро работает только последовательный доступ. ќбертка вокруг двусв€зного списка: по нему можно ходить в обе стороны.

#include "stdafx.h"

#include <list>

#include <iostream>

 

using namespace std;

 

struct Point

{

Point(int x, int y): X(x), Y(y)

{

 

}

 

Point(): X(0), Y(0)

{

 

}

 

int X;

int Y;

};

 

void DemonstrateList()

{

// 1. ќбъ€вление списка элементов какого-то типа.

list<Point> points;

 

// 2. ƒобавление элементов

// 2.1 ≈диничных элементов

points.push_back(Point(13, 22));

points.push_back(Point(22, 13));

 

// 2.2 ћассивов (у векторов аналогичным способом вставка массивов происходит)

int array[4] = { 2, 6, 4, 8 };

points.insert(points.begin(),

array,

array + 4);

 

// 2.3 —одержимого другого контейнера (у векторов аналогичным способом вставка массивов происходит)

list<Point> otherContainer;

otherContainer.push_back(Point(2, 3));

points.insert(points.begin(),

otherContainer.begin(),

otherContainer.end());

 

// 3. ƒоступ к произвольному элементу:

// делаетс€ через извращение с advance, контейнер не рассчитан на это,

// если это надо, то нужно вектор использовать.

auto element13Iterator = points.begin();

advance(element13Iterator, 12);

cout << element13Iterator->X;

 

// 4. ѕроход по содержимому списка

// 4.1 „ерез итератор

for (auto iterator = points.begin(); iterator!= points.end(); ++iterator)

{

cout << "Point " << "X = " << iterator->X << ", Y = " << iterator->Y;

}

 

// 4.2 „ерез итератор, замаскированный в for.

for (auto &element: points)

{

cout << "Point " << "X = " << element.X << ", Y = " << element.Y;

}

 

// 5. ¬ставка элемента в произвольную позицию

auto whereToInsert = points.begin();

advance(whereToInsert, 1);

points.insert(

whereToInsert,

Point(666, 666));

 

// 6. ”даление элемента с произвольной позиции.

auto whereToDelete = points.begin();

advance(whereToDelete, 1);

points.erase(whereToDelete);

 

// 7. ”даление элементов по критерию

auto pointIterator = points.begin();

while (pointIterator!= points.end())

{

if (pointIterator->X > 13) // критерий удалени€.

{

pointIterator = points.erase(pointIterator);

}

else

{

++pointIterator;

}

}

}

 

int _tmain(int argc, _TCHAR* argv[])

{

DemonstrateList();

}

Forward_list

 онтейнер в виде однонаправленного списка. ѕоддерживает вставку и удаление элементов. ѕроизвольный доступ медленный.

ќчередь двухсторонн€€ (deque)

ѕоследовательный индексированный контейнер. Ѕыстра€ вставка и удаление с обоих концов.

 онтейнеры-адаптеры

«десь часто используютс€ контейнеры вида очередь и стек. ќстальные типы практически не используютс€ и лишь упом€нуты.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-05-05; ћы поможем в написании ваших работ!; просмотров: 461 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ћучша€ месть Ц огромный успех. © ‘рэнк —инатра
==> читать все изречени€...

516 - | 493 -


© 2015-2023 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.008 с.