Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
1

Vector

06.11.2013, 12:15. Просмотров 426. Ответов 12
Метки нет (Все метки)

Создаю вектор
C++
1
vector<char*> ArrAns(1);
в одном из файлов .cpp. Используется он функциями, описанными в этом файле, и в файле Form2.cpp, куда он включён
C++
1
extern vector<char*> ArrAns;
Проблема в том, что когда я через F10 запускаю программу(по шагам) и она заходит на первый шаг, в векторе ArrAns уже находится более миллиона(?!) элементов. Притом я не менял его, ведь первый шаг
C++
1
2
3
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 12:15
Ответы с готовыми решениями:

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

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

Ошибка [Linker error] undefined reference to `Vector::Vector(int)'
Добрый день. Делал по методички, и почему-то валятся ошибки... файл...

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

Указатель на объект вектор в векторе vector < vector<int>* >*
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt;...

12
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 12:23 2
Сборка - релиз или дебаг?
0
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
06.11.2013, 12:24  [ТС] 3
Дебаг. В Release то же самое, кстати.
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 12:27 4
Цитата Сообщение от KV-1 Посмотреть сообщение
vector<char*> ArrAns(1);
а это где записано? внутри какого-нибудь класса/функции? или отдельно от кода
1
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
06.11.2013, 12:30  [ТС] 5
Отдельно от кода. Глобальная переменная.
Кстати, это написано с использованием CLR. Другая программа использует Win32 формы, код тот же, но всё работает.
0
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
06.11.2013, 12:30 6
Возможно причина в компиляторе. Некоторые компиляторы резервируют достаточно большой блок памяти для объектов класса vector. Попробуйте зарезервировать в ручную нужный вам размер вектора и посмотрим, что получится:
C++
1
2
std::vector<int> vec;
vec.reserve(/*Размер вектора*/);
Либо проверить в ручную тот же размер:
C++
1
size_type len = vec.capacity();
1
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
06.11.2013, 12:35  [ТС] 7
Ни reserve, ни resize не меняют размер. Точнее, и до и после компилятор говорит, что "Элемент содержит более 1000000 дочерних элементов". Visual Studio 2012, если что.
0
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
06.11.2013, 12:37 8
Цитата Сообщение от KV-1 Посмотреть сообщение
Ни reserve, ни resize не меняют размер. Точнее, и до и после компилятор говорит, что "Элемент содержит более 1000000 дочерних элементов". Visual Studio 2012, если что.
Эти методы не могут сделать массив меньше. Проверте размер и если он действительно такой то остается только руки поотбивать компилятору... (в том смысле что у меня других идей нет...)
0
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
06.11.2013, 13:30 9
Цитата Сообщение от KV-1 Посмотреть сообщение
ArrAns уже находится более миллиона(?!) элементов.
это что size() столько выдает или как?
0
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
06.11.2013, 13:35  [ТС] 10
Цитата Сообщение от KV-1 Посмотреть сообщение
компилятор говорит, что "Элемент содержит более 1000000 дочерних элементов".
Вот как.

Кстати,
C++
1
unsigned long long int asdfg = ArrAns.capacity();
не воспринимается как оператор и пропускается...

Сейчас я пытаюсь исправить Visual Studio(кнопка Исправить у инсталлятора). Быть может, всё из-за того, что компилятор сломался.
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 14:37 11
Что значит не воспринимается как оператор? Запускаем в дебаге, где никаких оптимизаций нет. Прописываем подобный вызов в какой-нибудь функции, заходим в нее и смотрим, что записалось в перемнную
0
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
06.11.2013, 16:33 12
Попробуйте вместо указателя на char поместить в контейнер обекты класса string, если это возможно. Я недавно изучаю STL, но кажется контейнер vector не сильно дружит с указателями. Хотя может я и ошибаюсь... однако мысль...
0
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
06.11.2013, 18:15  [ТС] 13
ArrAns.size() и ArrAns.capacity() имеют значения 1.

Главное то, что тот же код у меня в другой программе работает, а в этой, с CLR - нет.
0
06.11.2013, 18:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 18:15

Как корректно скопировать vector в vector внутри класса
Есть класс принимающий в конструкторе vector: class test { ...

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

Записать vector<vector<wchar_t>> в текстовый файл
Подскажите пожалуйста, как записать vector&lt;vector&lt;wchar_t&gt;&gt; в файл. Файл...


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

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

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