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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
#1

generate () - C++

05.06.2011, 16:14. Просмотров 2634. Ответов 6
Метки нет (Все метки)

нужно создать программу используя generate (). Нужно сгенерировать 4 числа от 0 до 3. Нашел
C++
1
2
3
4
5
template <class ForwardIterator, class Generator>
  void generate ( ForwardIterator first, ForwardIterator last, Generator gen )
{
  while (first != last)  *first++ = gen();
}
а как этим пользоваться не пойму
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 16:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос generate () (C++):

generate() и equal() - C++
доброго всем времени суток! взялся помочь знакомому решить задачу на с++, но видимо немного не рассчитал свой уровень. задача-...

Write some short C or C++ code to generate a segmentation fault - C++
Write some short C or C++ code to generate a segmentation fault

Write some short C or C++ code to generate a stack overflow - C++
Write some short C or C++ code to generate a stack overflow

Generate Device Name - Objective-C
Доброго времени суток. Вопросик есть. Мне нужно сгенерировать имя устройства и записать его в .plist и при каждом запуске приложения...

Ошибка generate - GPSS
OBRABOTKA STORAGE 1 REGULIROVKA STORAGE 2 SBORKA STORAGE 2 GENERATE 10 SPLIT 3, MET1 MET1 TRANSFER .5, MET2,MET3 ...

Rails generate не работает - Ruby on Rails
Всем доброго времени суток! Суть проблемы такова - сел за изучение Rails, все установилось, сервер запускается, bundle install...

6
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2011, 16:23 #2
Ardarik,
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
#include <algorithm>
#include <cstddef>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
 
int Random()
{
  const int min = 0;
  const int max = 3;
  
  return min + std::rand() % (max - min + 1);
}
 
int main() {
  const std::size_t size = 4;
  int               array[size];
  
  std::srand(std::time(0));
  std::generate(array, array + size, Random);
  
  std::copy(array, array + size, std::ostream_iterator<int>(std::cout, " "));
}
Результат: http://liveworkspace.org/code/339f526714644351e9bda0586591aa6c
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
05.06.2011, 16:31 #3
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
#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
 
class Gen
{
public:
  Gen() : m_a(0)
  {
  }
  int operator()()
  {
     return m_a++;
  }
private:
  int m_a;
};
 
int main()
{
  std::vector<int> v(4);
  std::generate( v.begin(), v.end(), Gen() );
  std::copy( v.begin(), v.end(), std::ostream_iterator<int>( std::cout, " " ) );
}
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
05.06.2011, 16:34 #4
Немного непонятно, нужны ли тебе последовательные либо случайные значения. Написал и так, и так:
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
63
64
65
66
67
68
69
#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
struct random_gen
{
    const int l_t, r_t;
    random_gen(int l, int r);
    int operator () ();
};
 
struct successive_gen
{
    int current;
    successive_gen(int c = 0);
    int operator() ();
};
    
int main()
{
    srand(static_cast<size_t>(time(NULL)));
 
    const int l_t = 0;
    const int r_t = 3;
    const size_t cnt = 4;
    
    std::vector<int> random(cnt);
    std::vector<int> successive(cnt);
 
    std::generate(random.begin(), random.end(), random_gen(l_t, r_t));
    std::generate(successive.begin(), successive.end(), successive_gen(l_t));
 
    // Вывод вектора случайных значений
    std::cout << cnt << " random values in range [" << l_t << ";" << r_t << "]: ";
    std::copy(random.begin(), random.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    // Вывод последовательных значений
    std::cout << cnt << " successive values starting from " << l_t << ": ";
    std::copy(successive.begin(),
          successive.end(),
          std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    
    return 0;
}
 
random_gen::random_gen(int l, int r)
    : l_t(l), r_t(r)
{
}
 
int random_gen::operator() ()
{
    return rand() % (r_t - l_t + 1) + l_t;
}
 
successive_gen::successive_gen(int c)
    : current(c)
{
}
 
int successive_gen::operator() ()
{
    return current++;
}
Еще можно через лямбды сделать

Хе, опоздал...
0
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
05.06.2011, 19:25  [ТС] #5
alex_x_x всегда генерирует 0 1 2 3 у меня.
А как эти числа поместить в вектор?
C++
1
std::copy( v.begin(), v.end(), std::ostream_iterator<int>( std::cout, " " ) );
в код CyBOSSeR???
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2011, 19:54 #6
Цитата Сообщение от Ardarik Посмотреть сообщение
А как эти числа поместить в вектор?
В 3-ем и 4-ом постах используются именно векторы.
0
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
05.06.2011, 21:23  [ТС] #7
Я подумал Ваш код легче будет переделывать. Nameless One обьемный код написал, буду разбираться
0
05.06.2011, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2011, 21:23
Привет! Вот еще темы с ответами:

Generate QR-code VB6 - Visual Basic
Всем салют. Возможна ли генерация QR-кода на VB6? На C# и VB.NET существуют библиотеки, для работы с QR. Существуют ли таковые на VB6?

Переменные для GENERATE - GPSS
Подскажите, какие переменные нужно указать GENERATE для матожидания 12 и дисперсии 5 мин..

Разделить поток через generate - GPSS
Добрый вечер , подскажите как через генерайт написать начало не могу понять: Всего работников можно разделить на две группы:...

Random; generate.Next(min, max) - C#
Ест checkBox. При установке в поле Checked значения true происходит следующее. private void checkBox1_CheckedChanged(object sender,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.