Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 21:01   #1
korel
 
Аватар для korel
 
Регистрация: 07.05.2009
Сообщений: 4
По умолчанию Проблема с действиями над вектором

При выводе вектора из n элементов выводится сначала столько же нулей, а после нулей уже и сами элементы вектора. + при удалении четных элементов вектора результат неверный.

Please, enter vector size: 6
0 0 0 0 0 0 6 0 19 4 7 6 - вот 6 нулей перед элементами вектора.
0 0 0 0 0 19 4 7 6 - а это результат удаления четных элементов

Помогите пожалуйста советом, что нужно поправить для корректного результата.
Заранее благодарен.


void ShowVector(vector<int> &MyVector)
{
if(MyVector.empty())
cout<<"Vector is empty.\n";
vector<int>::iterator it;
for(it=MyVector.begin();it!=MyVecto r.end();it++)
cout<<*it<<' ';
cout<<endl;
}

void Input(vector<int> &MyVector, int size)
{
for(int i=0;i<size;i++)
MyVector.push_back(rand()%21);
}

void Delete(vector<int> &MyVector, int size)
{
for(int i=0;i<size;i++)
{
if(i%2==0)
MyVector.erase(MyVector.begin()+i);
}
}

int _tmain(int argc, _TCHAR* argv[])
{
srand(time(NULL));
int VectorSize;
cout<<"Please, enter vector size: ";
cin>>VectorSize;
vector<int> vInts(VectorSize);
Input(vInts,VectorSize);
ShowVector(vInts);
Delete(vInts,VectorSize);
ShowVector(vInts);
return 0;
}
Цитата:
-----------------------------------------------------------------------------
Стремитесь к простоте настолько, насколько это возможно, но не более того.
korel вне форума Ответить с цитированием
Старый 10.05.2009, 22:38   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Думаю так
Код:
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

template<typename T> void ShowVector(vector<T> &vec){
	if(vec.empty())
		cout<<"Vector is empty.\n";
	copy(vec.begin(),vec.end(),ostream_iterator<T>(cout," "));
}

template<typename T> void Input(vector<T> &vec, int size){
	for(int i=0; i < size; ++i)
		vec.push_back(rand()%21);
}

template<typename T> bool func(T rhs){ return !(rhs & 1); }

template<typename T> void Delete(vector<T> &vec)
{
	vector<T>::iterator it;
	it = remove_if(vec.begin(),vec.end(),func<T>);
	vec.erase(it,vec.end());
}

int main()
{
//	srand(time(NULL));

	int size;
	cout<<"Please, enter vector size: ";
	cin>>size;
	vector<int> vInts(size);
	Input(vInts,size); 
	ShowVector(vInts); 
	Delete(vInts);
	cout<<endl;
	ShowVector(vInts); 
	cout<<endl;
	return 0;
}
Результат работы
Цитата:
Please, enter vector size: 6
0 0 0 0 0 0 20 8 13 19 17 16
13 19 17
Press any key to continue . . .
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа над пуском Манжосов Денис :) Помощь студентам 7 06.07.2008 16:01
Надстройка над Си emperio Win Api 2 26.04.2008 12:58
задача с вектором klarissa Помощь студентам 2 22.12.2007 22:24
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18
Насмешка над антивирусами Veytarn Софт 0 03.02.2007 05:19