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

Поменять местами две серии в массиве. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Начинания http://www.cyberforum.ru/cpp-beginners/thread60084.html
Хочу выучить с++ с какой программы посоветуете начать? хорошо было бы если бы дали ссылочку на книги по с++ (самоучители и т.п.) я раньше пользовался паскалем...) заранее спасибо за помощь.
C++ Задать в массиве некий элемент из другого массива. Вот у меня есть 1 массива char c; и char x="0123456789abcdefghijklmnopqrstuvwxyz" Как например задать c=элемент из x? Например мне нужен d=7; Я делал так c=x... В c=должно записаться 7, но... http://www.cyberforum.ru/cpp-beginners/thread60075.html
C++ Как считать массив из файла
Здравствуйте!!!я новичек в с++ и не могу решить задачу :как считать координаты точек и радиус из тестового файла...там получается надо считать x y r и создать соответствующие массивы!!
Что будет выведено на экран? C++
Увидел только что такую вот интересную задачку на одном форуме #include <iostream> struct aaa { aaa(int i) { std::cout << "aaa(int i)" << std::endl; } };
C++ программа зацикливается http://www.cyberforum.ru/cpp-beginners/thread60065.html
помогите скажите пожалуйста почему моя программа зацикливается #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<alloc.h> #include<string.h> #define maxlen 26 ...
C++ Шаблонный класс Как его реализовать??? Смысл я понимаю, но вот как записать...не знаю:cry: подробнее

Показать сообщение отдельно
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
30.10.2009, 22:09
Вот, сделано неоптимально и на скорую руку, но для лабораторной сойдёт (:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <algorithm>
#include <functional>
#include <vector>
#include <iterator>
#include <locale>
#include <iostream>
 
template <typename T>
struct finder : public std::unary_function<T, bool>
{
    typedef typename std::iterator_traits<typename T::value_type::first_type>::value_type value_type;
 
    finder(value_type v) : v_(v) {}
    
    bool operator()(const typename T::value_type& v) const
    {
        return *v.first == v_;
    }
 
    const value_type v_;
};
 
template <typename T>
void mutate_sequance(T begin, T end)
{
    typedef typename std::iterator_traits<T>::value_type value_type;    
    
    typedef std::vector<std::pair<T, T> > V;
    V v;
    
    T curr = begin, next;
    for(; (next = std::adjacent_find(curr, end, std::not2(std::equal_to<value_type>()))) != end; curr = ++next)
        v.push_back(std::make_pair(curr, next+1));
 
    v.push_back(std::make_pair(curr, next));
 
    typename V::iterator _1 = std::find_if(v.begin(), v.end(), finder<V>(2));
    typename V::iterator _2 = std::find_if(v.begin(), v.end(), finder<V>(5));
    std::iter_swap(_1, _2);
 
    std::cout << "После:\t";
    for (typename V::const_iterator it = v.begin(); it != v.end(); ++it)
        std::copy(it->first, it->second, std::ostream_iterator<value_type>(std::cout, " "));
    std::cout << std::endl;
}
 
int main()
{
    setlocale(LC_ALL, "");
    int arr[] = {1,1,1,2,3,3,4,4,4,5,5,5,6};
    const size_t N = sizeof(arr) / sizeof(arr[0]);
 
    std::vector<std::pair<const int*, const int*> > v;
 
    std::cout << "До:\t";
    std::copy(arr, arr+N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    mutate_sequance(arr, arr+N);
 
    return 0;
}
Вывод:
До: 1 1 1 2 3 3 4 4 4 5 5 5 6
После: 1 1 1 5 5 5 3 3 4 4 4 2 6
Проверка: http://codepad.org/p6Nf23rx
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru