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

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

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

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

18.05.2014, 21:58. Просмотров 219. Ответов 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!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 21:58     Ошибка с vector
Посмотрите здесь:

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

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

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

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

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

Ошибка в функции erase для vector - C++
cout &lt;&lt; &quot;How much numbers? : &quot;; int n; cin &gt;&gt; n; vector&lt;int&gt;array(n); for (int i = 0; i &lt; n; i++) { cin &gt;&gt; array; ...

массив обьектов std::vector (ошибка) - C++
у меня есть class Clients со всеми методами и переменными в другом классе у меня есть std::vector &lt;Clients&gt; List; который я хочу...

Ошибка при получении vector.size() - C++
Здравствуйте! Работал-работал и тут не с того не с сего начала вываливаться ошибка: First-chance exception at 0x00A9AAA9 in...

Ошибка исполнения при записи в vector - C++
Вылетает при воде первой строки. Не пойму почему? #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;sstream&gt; #include &lt;fstream&gt; ...

Ошибка при использовании vector<bool> - C++
Текст ошибки (Visual studio 2013): Ошибка 2 error C2440: return: невозможно преобразовать...

Непонятная ошибка при работе с vector - C++
Здравствуйте! Что делает программа: Определить, сколько раз в заданном предложении встречаются 3 одинаковых символа подряд (учитываем,...

Ошибка при использовании vector в заголовке функции - C++
/home/motoroller/qtProjects/laba1/main.cpp:8: ошибка: 'std::vector' is not a type bool extract_class_head(string str, std::vector...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
18.05.2014, 22:01     Ошибка с vector #2
http://www.cplusplus.com/reference/v...tor/push_back/
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,492
Записей в блоге: 4
19.05.2014, 02:09     Ошибка с vector #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;
}
Ответ Создать тему
Опции темы

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