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

Как исправить код с istream_iterator? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти максимальный элемент матрицы расположенный выше побочной диагонали и его местоположение http://www.cyberforum.ru/cpp-beginners/thread1068798.html
2d массив C++ Добавлено через 12 минут Дана матрица размером . Добавлено через 2 часа 25 минут Максимальный среди элементов расположенных выше побочной диагонали
C++ Занулить элементы в матрице между min и max сообственно нужно написать функцию которая будет занулять элементы между минимальным и максимальным ну я смог найти места минимального и максимального элемента но как занулить все между ними ? #include <iostream> #include <time.h> using namespace std; void RandMat(int **matrix, int n, int m) { http://www.cyberforum.ru/cpp-beginners/thread1068795.html
C++ Определить максимальный и минимальный элемент двумерного массива
Дан двумерный массив. Определить: а) Максимальное значение среди элементов третьего столбца массива; б) Минимальное значение среди элементов второй строки массива. Заранее огромное спасибо!
Определить количество положительных и количество отрицательных элементов массива C++
Определить количество положительных и количество отрицательных элементов массива Заранее огромное спасибо!
C++ Определить порядковый номер автомобиля, имевшего максимальную из средних скоростей движения http://www.cyberforum.ru/cpp-beginners/thread1068790.html
Известны длины участков пути (в км), которые проехали 25 легковых автомобилей, и время, затраченное каждым из них (в ч.). Определить порядковый номер автомобиля, имевшего максимальную из средних скоростей движения на участках. Заранее огромное спасибо!
C++ Выяснить в каком из данных натуральных чисел больше цифр Даны 2 натуральных числа. Выяснить в каком из них больше цифр. (Определить функцию для расчета количества цифр натруального числа). Заранее огромное спасибо! Перечитайте правила форума. Один вопрос - одна тема. Заголовок темы должен отражать суть вопроса. подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
11.01.2014, 22:52     Как исправить код с istream_iterator?
anubis1768, если надо чисто ввод делай так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
 
typedef std::istream_iterator<std::string> is;
typedef std::ostream_iterator<std::string> os;
 
int main()
{
    std::vector<std::string> names;
    std::copy(is(std::cin), is(), std::back_inserter(names));
 
    std::sort(names.begin(), names.end());
    names.erase(std::unique(names.begin(), names.end()), names.end());
    std::copy(names.begin(), names.end(), os(std::cout, "\n"));
}
Вместо функций-предикатов удобнее лямбды использовать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
 
typedef std::istream_iterator<std::string> is;
typedef std::ostream_iterator<std::string> os;
 
int main()
{
    std::vector<std::string> names;
    std::find_if(is(std::cin), is(), [&names](const std::string &str) {
        return str == "quit" ? true : (names.push_back(str), false);
    });
    std::sort(names.begin(), names.end());
    names.erase(std::unique(names.begin(), names.end()), names.end());
    std::copy(names.begin(), names.end(), os(std::cout, "\n"));
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
 
typedef std::istream_iterator<std::string> is;
typedef std::ostream_iterator<std::string> os;
 
int main()
{
    std::vector<std::string> names;
    std::find_if(is(std::cin), is(), [&names](const std::string &str) {
        return str == "quit" ? true : (names.push_back(str), false);
    });
    std::sort(names.begin(), names.end());
    names.resize(std::distance(names.begin(), std::unique(names.begin(), names.end())));
    std::copy(names.begin(), names.end(), os(std::cout, "\n"));
}
Я std::erase заменил на std::vector::resize т.к. он должен работать быстрее, тем более что тебе надо удалить ВЕСЬ хвост.
 
Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru