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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2015, 17:42   #1
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
По умолчанию Лямбда-выражения с STL

Здравствуйте. Помогите пожалуйста с программой. Использование STL
Задания
1. Написать пример работы с заданной коллекцией: продемонстрировать добавление, удаление элементов из коллекции, проход по коллекции элементов (через итератор и через for), модификацию элементов.
2. Написать пример использования заданных контейнеров с заданными алгоритмами без функтора.
3. Написать пример использования заданных контейнеров с заданными алгоритмами с функтором. Использовать разные виды функторов, обязательно попробовать лямбда-выражения.

В примерах с лямбда-выражениями попробуйте, пожалуйста, реализовать передачу локальных аргументов вне лямбда-выражения в лямбда-выражение через добавление их в [].

Контейнер - vector
Алгоритмы без функтора - unique, find
Алгоритмы c функтором - none_of, sort, copy_if
Код:
#include <iostream>
#include <iomanip>
#include <exception>
#include <vector>
#include <iterator>
#include <algorithm>
#include <string>

int main()
{
	std::vector<std::string> Strings; // с циклом for
	std::vector <std::string>::iterator _it;
	Strings.push_back("String one");
	Strings.push_back("String two");
	Strings.push_back("String three");

	std::cout << "\nShow our vector: ";

	if (!Strings.empty())
	{ 
		std::copy(_it = Strings.begin(), _it = Strings.end(),std:: ostream_iterator<std::string>(std::cout," ") );
	}

	std::cout << "\nNumbers of elemets in vector: " << Strings.size();

	std:: vector<std::string> Strings_2 = Strings;

	std::cout << "\nCopy Strings in Strings_2: ";

	std::copy( _it = Strings_2.begin(), _it = Strings_2.end(), std::ostream_iterator<std::string>(std::cout," ") );

	std:: cout << "\nFirst element of Strings_2: " << Strings_2.front().c_str() << std::endl;
	std:: cout << "\nLast element of Strings_2: " << Strings_2.back().c_str() << std::endl;

	Strings_2.push_back("ADD ELEMENT IN BACK");

	std::cout << "Show our new vector: "<<std::endl;
	std::copy( _it = Strings_2.begin(), _it = Strings_2.end(),std:: ostream_iterator<std::string>(std::cout," ") );

	std::cout<<"\nReverse: "<<std::endl;

	for(auto rit=Strings_2.rbegin();rit<Strings_2.rend();++rit)
		std::cout << *(*rit).c_str() << " ";

	_it = Strings_2.begin();
	Strings_2.insert (_it,"***");
	_it = Strings_2.begin() + 3;
	Strings_2.insert(_it,"////");
	Strings_2.insert(_it+1,"----");

	std::cout<<std::endl;
	std::cout << "Using an iterator to insert into an vector of strings: "<<std::endl;

	std::cout << "Show our new vector: " << std::endl;
	std::copy( _it = Strings_2.begin(), _it = Strings_2.end(), std::ostream_iterator<std::string>(std::cout," ") );
	std::cout << std::endl;

	//функтор
	struct cmp    
	{
		bool operator ()(std::string a, std::string b) const
		{
			return a.length() < b.length(); 
		}
	} cmp;
	//сортировка
	std::sort(Strings_2.begin(), Strings_2.end(), cmp);

	std::cout << "\n\nShow our new vector after sort: " << std::endl;
	
	std::copy( _it = Strings_2.begin(), _it = Strings_2.end(), std::ostream_iterator<std::string>(std::cout," ") );
	std::cout << std::endl;
	//... вывод
	system("PAUSE");
	return 0;
}
shilovec5377 вне форума Ответить с цитированием
Старый 11.06.2015, 17:57   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

И? Проблема в чем?
p51x на форуме Ответить с цитированием
Старый 11.06.2015, 18:03   #3
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
Сообщение

Цитата:
Сообщение от p51x Посмотреть сообщение
И? Проблема в чем?
нету Алгоритма без функтора - unique, find.
подскажите куда его можно прописать и как?
shilovec5377 вне форума Ответить с цитированием
Старый 11.06.2015, 22:42   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Хотите новость? У вас и none_of, copy_if тоже нету...

Цитата:
подскажите куда его можно прописать
Ну куда-нибудь после заполнения исходного вектора.

Цитата:
и как?
Ну, например, как то так:
Код:
auto itt = std::unique(Strings.begin(), Strings.end());
П.С. Может вас пугает страшное слово "функтор"?
p51x на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
лямбда выражения(c#) помогите разобраться kirkl Помощь студентам 2 21.02.2015 10:55
События и лямбда-выражения Devdev12 Общие вопросы .NET 2 11.09.2013 14:32
STL в QT конфликтует с STL в Borland nvrrus C++ Builder 0 31.03.2011 10:51
g++ лямбда the_deer_one Общие вопросы C/C++ 3 22.08.2010 15:19
Лямбда в С++? Utkin Общие вопросы по программированию, компьютерный форум 8 04.06.2010 12:51