Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
#1

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

14.08.2011, 10:19. Просмотров 2827. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 10:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работать с <vector> (C++):

Как правильно работать с vector? - C++
// 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<vector<int>>arr(n, vector <int>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

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

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

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Как изменять размер std::vector<std::vector>? - C++
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

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

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

/ps У вас ужассный стиль кода. Читать его - напрягает. Всё в кучу. Каша какая то.
Если в голове - такая же каша, то не удивительно, что вы запутались. Вынесите определения функций за пределы майна. Оставьте в майне только логику.
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.08.2011, 10:57 #3
Леен Аммерааль - STL для программистов на С++
Уильям Дж. Коллинз - Структуры данных и стандартная библиотека шаблонов
Николай Джосьютис. C++. Стандартная библиотека
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.08.2011, 11:21 #4
А Effective STL Майерса чем плоха?
Bers
Заблокирован
14.08.2011, 11:26 #5
Цитата Сообщение от diagon Посмотреть сообщение
А Effective STL Майерса чем плоха?
Книга рассчитана на людей, которые уже имеют представление о векторах, алгоритмах, и тп.
Майерс пишет о том, как эффективнее юзать стл, а не о том, что такое это стл, и с чем его едят.
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
14.08.2011, 12:29 #6
Добавлю свежую книжку: http://www.ozon.ru/context/detail/id/5384178/
Прекрасный справочник. Постоянно у меня в работе.
В первой части - куча примеров.
Avazart
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,585
Записей в блоге: 17
15.08.2011, 07:31 #7
http://www.stu**********/dir/cat32/su.../file8069.html Николай Джосьютис
LosAngeles
Заблокирован
15.08.2011, 08:30 #8
Цитата Сообщение от Avazart Посмотреть сообщение
она бесплатная?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 08:30
Привет! Вот еще темы с ответами:

Ошибка [Linker error] undefined reference to `Vector::Vector(int)' - C++
Добрый день. Делал по методички, и почему-то валятся ошибки... файл lab9_main.cpp #include &lt;iostream&gt; #include &quot;Vector.h&quot; int...

vector<Struct2{int,vector<struct1>}> или множественное наследование ... - C++
Здравствуйте! Помогите, пожалуйста. Есть такие данные: typedef struct { int x; int y; // координаты...

Указатель на объект вектор в векторе vector < vector<int>* >* - C++
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt; #include &lt;iostream&gt; int main( ) { using...

Записать числа из файла в двумерный массив или вектор вроде такого vector<vector<int>> - C++
Добрый день, подскажите пожалуйста как лучше и проще считывать файл. в файле записаны числа, разделенные пробелами и запятыми: 1, 2, 3,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.08.2011, 08:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru