Russian Qt Forum
Ноябрь 23, 2024, 22:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: std::vector еще один вопрос  (Прочитано 10700 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #15 : Май 25, 2011, 16:02 »

Странно, должна выводить....
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Ovoshlook
Гость
« Ответ #16 : Май 25, 2011, 19:00 »

Я могу вам кинуть проект сам. Если не сложно посмотрите. Я не прошу за меня сделать, просто не пользовался дебагом, и по логике как вы правильно заметили должно выводитью Может что то не то написал все таки.
На всякий случай прикрепляю:

http://files.mail.ru/MOFBIN
После появления авторизационного окошка сразу ок жмите. Сточку я добавил в функцию OTS_MainWindow::AddTabForQuestion()

Заранее спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Май 25, 2011, 19:43 »

ничего не выводится потому, что туда программа и не заходит

строка 96:
Код
C++ (Qt)
if (QuestionTabWidget->currentIndex()==GlobalVaribles::NumberOfTab)
всегда будет выдавать ложь, поскольку когда нету табов, то индекс будет равен -1, а твое начальное значение GlobalVaribles::NumberOfTab равно 0. соответственно при каждом добавлении таба эти 2 величины всегда будут отличаться на 1. Установил начальное значение GlobalVaribles::NumberOfTab в -1 и все стало выводиться. раскомментировал тот инкремент и еще пару изменений вектора и закрашить приложение так и не удалось (на маке).

вскользь успел заметить, что форматирование кода немного хромает, правильно все-таки GlobalVariables и при добавлении таба, когда выделен непоследний таб, скачок значения происходит на 1 (напр. было 0 1, выделил 0 и нажал добавить - стало 0 2 3).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Ovoshlook
Гость
« Ответ #18 : Май 25, 2011, 21:58 »

ничего не выводится потому, что туда программа и не заходит

строка 96:
Код
C++ (Qt)
if (QuestionTabWidget->currentIndex()==GlobalVaribles::NumberOfTab)
всегда будет выдавать ложь, поскольку когда нету табов, то индекс будет равен -1, а твое начальное значение GlobalVaribles::NumberOfTab равно 0. соответственно при каждом добавлении таба эти 2 величины всегда будут отличаться на 1. Установил начальное значение GlobalVaribles::NumberOfTab в -1 и все стало выводиться. раскомментировал тот инкремент и еще пару изменений вектора и закрашить приложение так и не удалось (на маке).

вскользь успел заметить, что форматирование кода немного хромает, правильно все-таки GlobalVariables и при добавлении таба, когда выделен непоследний таб, скачок значения происходит на 1 (напр. было 0 1, выделил 0 и нажал добавить - стало 0 2 3).

Спасибо! Полгода программу не доставал мог и упустить)
Спасибо что указали на ошибки!
Ну а с английсим правописанием бедаа у меня))
Записан
Ovoshlook
Гость
« Ответ #19 : Май 30, 2011, 09:25 »

Дабы не пложить тем у еня назрел еще один вопрос по вектору. на этот раз про дувмерный вектор.

Ситуация следующая:
Я создаю двумерный вектор (вектор векторов). По умолчанию он нулевой.
В нужный мне момент я определяю его размер:
Код:
vector.resize[k];
то есть по идее мой вектор сейчас состоит из k векторов размерности 0.

Собственно в один прекрасный момент мне требуется переопределить размер одного из векторов. каким образом мне это делать?

метод
Код:
vector[i].resize[j]

не работает. ругается ошибкой  при определении адреса перегруженной функции. Заранее определить размер векторов нельзя так как переопредеяется размер и заполняются элементы этих векторов динамически.

Сам вектор вроде правильно описываю :

Код:
static std::vector <std::vector<int> > vector;

Заранее всем спасибо за терпение и помощь.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #20 : Май 30, 2011, 09:53 »

Код
C++ (Qt)
#include <vector>
 
using std::vector;
 
int main()
{
vector<vector<int> > v;
v.resize(4);
v[2].resize(3);
return 0;
}
g++ компилирует без ошибок, размеры внешнего и внутренних векторов правильные

если у тебя элементы вектора заполняются последовательно, то лучше используй push_back(), чем resize()

з.ы. а тю, ты вызываешь resize[], а не resize() Улыбающийся
« Последнее редактирование: Май 30, 2011, 09:57 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Ovoshlook
Гость
« Ответ #21 : Май 30, 2011, 11:50 »

Прошу прощения за свою невнимательность((( Написал вместо vector.resize(k) просто vector.resize
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.344 секунд. Запросов: 23.