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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2017, 12:22   #11
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
я хз, что вы там проверяли, у меня нет визуалки, g++ по умолчанию все норм компилит.
...трансформ применяет заданную функцию (ЛЮБУЮ!) к интервалу и результат применения сохраняет в другом интервале начиная с (т.о. интервал-результат уже должен иметь нужный размер).
ремове_иф - использует предикат (булева функция), если он возвращает труе, то значение перемещается в конец, т.о. после выполения ремове_иф мы имеем итератор на первое перемещенное значение (они не удалены, они в конце).
ерейз - стирает заданные интервал (задаем началом результат ремове_иф, и концом - конец вектора).

...вообще полезно почитать оригинал документации, а не требовать перевода тут ...вы справитесь, в свое время, после школы, я знал 5 слов на английском. Потом 2-3 года упорного чтения документации на англ с компакт диска. по компу с бумажным словарем (а переводных и интернета еще не было), теперь свободно говорю.
так я уже сам переделал:
Код:
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>

std::string removePunct(std::string str)
{
	str.erase(std::remove_if(str.begin(), str.end(), ispunct), str.end());
	return str;
}

std::vector<std::string> shouldBeRemoved(const std::vector<std::string>& lines)
{
	std::vector<std::string> result;
	std::transform(lines.begin(), lines.end(), result.begin(), removePunct);
	return result;
}

int main()
{
	std::vector<std::string> words = { "The requested page title was invalid, empty", 
		"or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more", 
		"characters that cannot, be used in titles." };

	shouldBeRemoved(words);
	for (const auto& i : words)
	{
		std::cout << i << "\n";
	}
	return 0;
}
dimaSlon вне форума Ответить с цитированием
Старый 25.06.2017, 12:24   #12
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

а где я требовал чтобы мне перевели тут документацию? если я написал что Ваша програма не работает, то это не значит что я что то от Вас хочу, просто указал что не правильно работает)
g++: выводит с знаками припинания
http://rextester.com/l/cpp_online_compiler_gcc
dimaSlon вне форума Ответить с цитированием
Старый 25.06.2017, 12:28   #13
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

alexzk, спасибо за помощь
dimaSlon вне форума Ответить с цитированием
Старый 25.06.2017, 12:29   #14
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от dimaSlon Посмотреть сообщение
а где я требовал чтобы мне перевели тут документацию? если я написал что Ваша програма не работает, то это не значит что я что то от Вас хочу, просто указал что не правильно работает)
g++: выводит с знаками припинания
http://rextester.com/l/cpp_online_compiler_gcc
хм, там у них версия 5.4, 7я не выводит, и их clang не выводит
alexzk вне форума Ответить с цитированием
Старый 25.06.2017, 12:38   #15
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
хм, там у них версия 5.4, 7я не выводит, и их clang не выводит
если не сложно в еще раз посмотрите на мой код, он просто крешится. и я не пойму почему
Код:
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>

std::string removePunct(std::string str)
{
	str.erase(std::remove_if(str.begin(), str.end(), ispunct), str.end());
	return str;
}

std::vector<std::string> shouldBeRemoved(const std::vector<std::string>& lines)
{
	std::vector<std::string> result;
	std::transform(lines.begin(), lines.end(), result.begin(), removePunct);
	return result;
}

int main()
{
	std::vector<std::string> words = { "The requested page title was invalid, empty", 
		"or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more", 
		"characters that cannot, be used in titles." };

	shouldBeRemoved(words);
	for (const auto i : words)
	{
		std::cout << i << "\n";
	}
	return 0;
}
dimaSlon вне форума Ответить с цитированием
Старый 25.06.2017, 12:42   #16
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Багнутый оптимайзер походу...

Код:
using str_list = std::vector<std::string>;

str_list shouldBeRemoved(const str_list& words)
{	
	const std::set<char> toRemove{',', '.', '!', ':'};
    
    str_list result;
    result.resize(words.size());
    
    std::transform(words.begin(), words.end(), result.begin(), [&toRemove](auto &s)
	{
		auto tmp = s;
        auto it = std::remove_if(tmp.begin(), tmp.end(),  [&toRemove](char symb){            
            return toRemove.count(symb) > 0;
        });
        tmp.erase(it, tmp.end());       
        return tmp;
	});
    return result;
}

int main()
{
	const str_list words = {
        "The requested page title was invalid, empty, or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more, characters that cannot, be used in titles.",
        "More. String.!",
    };
    
	auto r = shouldBeRemoved(words);
	for (const std::string& i : r) 
	{
		std::cout << i << "\n";
	}
	return 0;
}
alexzk вне форума Ответить с цитированием
Старый 25.06.2017, 12:44   #17
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от dimaSlon Посмотреть сообщение
если не сложно в еще раз посмотрите на мой код, он просто крешится. и я не пойму почему
Код:
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>

std::string removePunct(std::string str)
{
	str.erase(std::remove_if(str.begin(), str.end(), ispunct), str.end());
	return str;
}

std::vector<std::string> shouldBeRemoved(const std::vector<std::string>& lines)
{
	std::vector<std::string> result;
	std::transform(lines.begin(), lines.end(), result.begin(), removePunct);
	return result;
}

int main()
{
	std::vector<std::string> words = { "The requested page title was invalid, empty", 
		"or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more", 
		"characters that cannot, be used in titles." };

	shouldBeRemoved(words);
	for (const auto i : words)
	{
		std::cout << i << "\n";
	}
	return 0;
}
Потому что вы не читали не меня, не документацию
Цитата:
(т.о. интервал-результат уже должен иметь нужный размер).
Код:
std::vector<std::string> result;
result.resize(lines.size());

Последний раз редактировалось alexzk; 25.06.2017 в 12:46.
alexzk вне форума Ответить с цитированием
Старый 25.06.2017, 13:09   #18
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Потому что вы не читали не меня, не документацию

Код:
std::vector<std::string> result;
result.resize(lines.size());
спасибо, а не скажет есть в std функция которая ищет есть ли гласная буква . и функция есть ли цыфра в лове?
dimaSlon вне форума Ответить с цитированием
Старый 25.06.2017, 13:14   #19
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

http://lmgtfy.com/?q=c%2B%2B+algorithm
alexzk вне форума Ответить с цитированием
Старый 25.06.2017, 13:16   #20
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
искал, не нашел)
dimaSlon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать количество знаков препинания С++ wolchara Помощь студентам 2 11.01.2015 14:36
Функция для удаления елементов которые меньше среднего арифметического всех елементов масива.С++. DIQUON Помощь студентам 4 18.12.2012 20:33
Удаление знаков препинания из текстов. С++ Angriff Помощь студентам 3 08.03.2012 15:52
последовательность знаков препинания Владимир_король Помощь студентам 3 29.04.2010 10:56
Программа удаления знаков препинания... hen Общие вопросы C/C++ 17 11.10.2009 16:57