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

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

Войти
Регистрация
Восстановить пароль
 
KV-1
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20
#1

Vector - C++

06.11.2013, 12:15. Просмотров 402. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Vector (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;...

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

Ошибка [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 внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
I.M.
564 / 547 / 5
Регистрация: 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.
564 / 547 / 5
Регистрация: 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
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 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
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
06.11.2013, 12:37 #8
Цитата Сообщение от KV-1 Посмотреть сообщение
Ни reserve, ни resize не меняют размер. Точнее, и до и после компилятор говорит, что "Элемент содержит более 1000000 дочерних элементов". Visual Studio 2012, если что.
Эти методы не могут сделать массив меньше. Проверте размер и если он действительно такой то остается только руки поотбивать компилятору... (в том смысле что у меня других идей нет...)
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 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.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 14:37 #11
Что значит не воспринимается как оператор? Запускаем в дебаге, где никаких оптимизаций нет. Прописываем подобный вызов в какой-нибудь функции, заходим в нее и смотрим, что записалось в перемнную
0
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 18:15
Привет! Вот еще темы с ответами:

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

Struct / Vector / Expression: vector subscript out of range - C++
Добрый вечер. Имеется структура: struct Contact { public: string name; vector&lt;string&gt; phoneNumber; };

Записать vector<vector<wchar_t>> в текстовый файл - C++
Подскажите пожалуйста, как записать vector&lt;vector&lt;wchar_t&gt;&gt; в файл. Файл необходимо открывать через _wfopen. Пробую так, не получается....

При include<vector> не включает и не видит vector - C++
Не видит vector: //--ClassNeuron.h #ifndef NEURON_H #define NEURON_H #include &lt;cstdlib&gt; #include...


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

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

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