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

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

Войти
Регистрация
Восстановить пароль
 
Gmails
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248
#1

Ошибка с vector - C++

18.05.2014, 21:58. Просмотров 221. Ответов 2
Метки нет (Все метки)

не могу записать координаты,стояла студия 12 все норм было.
сейчас 10 эксперсс стоит.вот проблема:
C++
1
2
3
4
5
6
7
8
9
10
std::vector<pt> a = {
        {2, 2},
        {3, 4},
        {1, 4},
        {2, 7},
        {4, 7},
        {5, 4},
        {5, 1},
        {7, 4}
    };
вот полный код программы:
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
#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
struct pt {
    double x, y;
};
 
bool cmp (pt a, pt b) {
    return a.x < b.x || a.x == b.x && a.y < b.y;
}
 
bool cw (pt a, pt b, pt c) {
    return a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y) < 0;
}
 
bool ccw (pt a, pt b, pt c) {
    return a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y) > 0;
}
 
void convex_hull (vector<pt> & a) {
    if (a.size() == 1)  return;
    sort (a.begin(), a.end(), &cmp);
    pt p1 = a[0],  p2 = a.back();
    vector<pt> up, down;
    up.push_back (p1);
    down.push_back (p1);
    for (size_t i=1; i<a.size(); ++i) {
        if (i==a.size()-1 || cw (p1, a[i], p2)) {
            while (up.size()>=2 && !cw (up[up.size()-2], up[up.size()-1], a[i]))
                up.pop_back();
            up.push_back (a[i]);
        }
        if (i==a.size()-1 || ccw (p1, a[i], p2)) {
            while (down.size()>=2 && !ccw (down[down.size()-2], down[down.size()-1], a[i]))
                down.pop_back();
            down.push_back (a[i]);
        }
    }
    a.clear();
    for (size_t i=0; i<up.size(); ++i)
        a.push_back (up[i]);
    for (size_t i=down.size()-2; i>0; --i)
        a.push_back (down[i]);
}
 
int main() {
    std::vector<pt> a = {
        {2, 2},
        {3, 4},
        {1, 4},
        {2, 7},
        {4, 7},
        {5, 4},
        {5, 1},
        {7, 4}
    };
 
    convex_hull(a);
    for (const auto& pt : a) {
        std::cout << pt.x << " " << pt.y << std::endl;
    }
}
Добавлено через 1 час 38 минут
up!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 21:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка с vector (C++):

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

vector(выскакивает ошибка "vector iterators incompatible") - C++
Доброго времени суток! имеется следующий код: // obr.cpp : Defines the entry point for the console application. // #include...

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;...

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

Ошибка при vector - C++
Подскажите в чем может быть проблема? На 1 принтскрине обычный &quot;Hello world&quot; работает нормально. (принтскрин 2) Дальше хочу...

Ошибка push_back() в vector - C++
Доброго времени суток. Сразу код : #include &quot;stdafx.h&quot; #include &quot;expat.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
18.05.2014, 22:01 #2
http://www.cplusplus.com/reference/v...tor/push_back/
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6472 / 3120 / 306
Регистрация: 04.12.2011
Сообщений: 8,594
Записей в блоге: 4
19.05.2014, 02:09 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Списком можно массив инициализировать, и передать в конструктор два указателя. На голову и за хвост. Они преобразуются к итераторам begin и еnd соответственно. Для интегрированных типов можно добавлять в конец значения в виде литералов, тогда памяти на стеке не потребуется. А у Вас объекты и тогда нужно создать временный стековый объект и каждый раз присваивать ему поля, а потом добавлять.
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
#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;
 
struct pt {
    double x, y;
};
 
int main()
{
SetConsoleCP (1251); SetConsoleOutputCP (1251);
const int sz = 8;
 pt arraychic[]=
     {
        {2, 2},
        {3, 4},
        {1, 4},
        {2, 7},
        {4, 7},
        {5, 4},
        {5, 1},
        {7, 4}
    };
 
std::vector<pt> a( arraychic, arraychic + sz );
for ( int i = 0; i < sz ; ++ i ) cout << a[i].x << " " << a[i].y <<endl;
cout << endl ;
system("pause") ;
return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 02:09
Привет! Вот еще темы с ответами:

класс vector ошибка в push_back() - C++
#include &lt;iostream&gt; #include &lt;cstddef&gt; using namespace std; class vector { public: ...

Ошибка с записью в vector из файла - C++
Доброго времени суток. Проблема с считыванием слов из текстового файла в функции read_file - считывает последнее слово файла дважды. ...

Ошибка: Vector subscript out of range - C++
Всю голову сломал, не вижу где ошибка...Выводит только первые 5 итераций, вместо 45... int ecc = 44; //Запись в массив...

Ошибка vector subscript out of range - C++
Пишет &quot;vector subscript out of range&quot; Смысл этой задачи найти число с максимальной суммой делителей(всех) #include &lt;vector&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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