Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257

Как работать с <vector>

14.08.2011, 10:19. Показов 4285. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот есть код (алгоритм Грехема). Про vector как им пользоваться мало где написано, если написано то на английском или ещё каком-нибудь другом языке. Хочу узнать как ввести данные и как это работает (не сам алгорим, а использование vector (мне кажется это массив)).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <vector>
#include <cmath>
#include <list>
#include <algorithm>
#define eps 1e-8;
using namespace std;
 
double area_triangle (point a, point b, point c);
bool ccw (point a, point b, point c);
double dist(point a, point b);
 
class point
{
 public: 
    double x,y;
    int i;
    point(double _x, double _y) 
     {
      x=_x;
      y=_y;
     }
    point()
     {
      point(0, 0);  
     }
};
 
point first;
 
class less_of_ccw
{
 public:
    bool operator () (point a, point b)
     {
      if (a.i==first.i) return true;
      if (b.i==first.i) return false;
      if (ccw(first,a,b)) return true;
      if (ccw(first,b,a)) return false;
      return dist(first,a)>dist(first,b);
     }
};
 
int main()
{
}
 
bool ccw (point a, point b, point c)
{
 return area_triangle(a,b,c)>eps;
}
 
double area_triangle (point a, point b, point c)
{
 return 0.5*(a.x*b.y+b.x*c.y+c.x*a.y-a.y*b.x-b.y*c.x-c.y*a.x); 
}
 
double dist(point a, point b)
{
 return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
 
void hull_graham (vector <point> p, vector <int> &ip)
{
 int n=p.size();
 int i;
 for (i=0; i<n; ++i) p[i].i=i;
 first=p[0];
 for (i=1; i<n; ++i)
 if (first.x>p[i].x || (first.x==p[i].x && first.y>p[i].y)) first=p[i];
 sort (p.begin(), p.end(), less_of_ccw());
 ip.push_back (0);
 for (i=1; i<n && abs(area_triangle(p[0],p[1],p[i]))<=eps; ++i);
 ip.push_back (1);
 int top=1;
 while (i<n)
  {
   if (!ccw(p[ip[top-1]],p[ip[top]],p[i]))
    {
     --top;
     ip.pop_back ();
    }
   else
    {
     ++top;
     ip.push_back (i);
     ++i;
    }
  }
 for (i=0; i<ip.size(); ++i) ip[i]=p[ip[i]].i;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2011, 10:19
Ответы с готовыми решениями:

Как правильно работать с vector?
// Create buttons. int const size = 5; int x = 50; int y = 50; int j = 0; vector&lt;Button*&gt; vLevel; for (int i = 0; i &lt;...

Как работать с шаблоном vector в Builder XE8
Люди! Перешёл на Builder XE8 с Builder 6. В шестом билдере в файле было #include &lt;vector.h&gt; xe8 ругается: не могу открыть такой файл....

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

7
Заблокирован
14.08.2011, 10:49
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Вот есть код (алгоритм Грехема). Про vector как им пользоваться мало где написано, если написано то на английском или ещё каком-нибудь другом языке. Хочу узнать как ввести данные и как это работает (не сам алгорим, а использование vector (мне кажется это массив)).
"c++ Стандартная библиотека", автор Nicolai M. Josuttis

У меня есть в эл. виде на русском языке. Если нужно, могу выслать.
Очень доступным языком расписывается стл, со всеми её векторами, и прочими контейнерами.

/ps У вас ужассный стиль кода. Читать его - напрягает. Всё в кучу. Каша какая то.
Если в голове - такая же каша, то не удивительно, что вы запутались. Вынесите определения функций за пределы майна. Оставьте в майне только логику.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 11:21
А Effective STL Майерса чем плоха?
1
Заблокирован
14.08.2011, 11:26
Цитата Сообщение от diagon Посмотреть сообщение
А Effective STL Майерса чем плоха?
Книга рассчитана на людей, которые уже имеют представление о векторах, алгоритмах, и тп.
Майерс пишет о том, как эффективнее юзать стл, а не о том, что такое это стл, и с чем его едят.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
14.08.2011, 12:29
Добавлю свежую книжку: http://www.ozon.ru/context/detail/id/5384178/
Прекрасный справочник. Постоянно у меня в работе.
В первой части - куча примеров.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.08.2011, 07:31
Николай Джосьютис
1
Заблокирован
15.08.2011, 08:30
Цитата Сообщение от Avazart Посмотреть сообщение
Николай Джосьютис
она бесплатная?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2011, 08:30
Помогаю со студенческими работами здесь

Как сложить два vector и записать в третий vector ?
Не получается сложить два вектора по элементно и записать в третий . Складываю уже переведенные числа из десятичной в восьмеричной системе...

Как корректно скопировать vector в vector внутри класса
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Как работать с шаблоном vector в Builder XE8
Люди! Перешел с builder 6 на xe8 В файле было #include &lt;vector.h&gt; xe8 ругается не могу открыть такой файл. Посмотрел в его инклудах...

Как обращаться к vector<vector>?
добрый день не подскажите, как обращаться к такой структуре: vector&lt;vector&lt;pair&lt;bool, string&gt;&gt;&gt; v; v....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru