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

Новый масив из уникальных элементов другого массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Все элементы вектора, которые встречаются более одного раза, переписать в другой вектор http://www.cyberforum.ru/cpp-beginners/thread709355.html
Все элементы вектора V,которые встречаються более одного раза ,переписать в другой вектор. Задача на С++ помогите решить.
C++ Работа с шрифтами Заносим в массив кнопки с диалогового окна: for(int index = 0; index < CONTROL_BUTTON_COUNT; index++) DDX_Control(pDX, index + 1000, ControlButtons); .... Устанавливаем текст кнопки и ее шрифт: CHAR Lang; http://www.cyberforum.ru/cpp-beginners/thread709352.html
найдите пожалуйста ошибку C++
почему то слепляет возраст и имя 2го и 3го рабочих #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { int vA,vB,vC; char a; char b; char c;
Как связать два cpp файла в одном проекте (visual studio 2010) C++
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include <iostream> #include <fstream> #include <string> using namespace std; void main () {
C++ Найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread709323.html
пожалуйста найдите ошибку((( #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #define FALSE 0 #define TRUE 1 void menu(void);
C++ Получить матрицу из чисел, заполняющих матрицу по линиям, параллельным главной диагонали Получить матрицу A=(aij), i,j=1..n, n<=100, элементами которой является ряд натуральных чисел, заполняющих матрицу по линиям параллельным главной диагонали, напр 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16 подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
26.11.2012, 03:17     Новый масив из уникальных элементов другого массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstddef>
#include <algorithm>
#include <iterator>
#include <random>
#include <ctime>
 
int main ()
{
    std::mt19937 gen (time (0));
    std::uniform_int_distribution<int> uid (0, 20);
    const std::size_t N = 25;
    std::vector<int> V(N), A(N);
    std::generate (V.begin(), V.end(), [&uid, &gen] { return uid(gen); } );
    std::copy(V.begin(), V.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::cout<< std::endl;
    std::sort(V.begin(), V.end());
    auto it = std::unique_copy(V.begin(), V.end(), A.begin() );
    A.resize(it - A.begin() );
    std::copy(A.begin(), A.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::cout<< std::endl;
    return 0;
}
Добавлено через 1 минуту
Еще вариант с мапом:
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
#include <iostream>
#include <cstddef>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
#include <ctime>
#include <map>
 
int main ()
{
    std::mt19937 gen (time (0));
    std::uniform_int_distribution<int> uid (0, 20);
    const std::size_t N = 25;
    std::vector<int> V(N), A;
    std::generate (V.begin(), V.end(), [&uid, &gen] { return uid(gen); } );
    std::copy(V.begin(), V.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::cout<< std::endl;
    std::map<int, int> m;
    for (auto &x: V)
        ++m[x];
    for (auto &x: m)
        if (x.second == 1) A.push_back(x.first);
    std::copy(A.begin(), A.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::cout<< std::endl;
    return 0;
}
 
Текущее время: 19:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru