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

Вывести сообщение о том, что все элементы в массиве равны - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ __declspec(property) и с чем его едят http://www.cyberforum.ru/cpp-beginners/thread349268.html
Что это такое и как это использовать? У меня задание в лабораторной по обычному с++, но вот такая штука имеет место быть. Насколько я понял это какие-то свойства, прикрученные ms но как они используются? Заголовочный файл где они есть (сама программа представляет собой структуру по хранению данных о студентах): //#include "stdafx.h" #ifndef TYPES_INCLUDE #define TYPES_INCLUDE ...
C++ Оставить в списке только первые вхождения одинаковых элементов В составе программы описать функцию, которая оставляет в списке только первые вхождения одинаковых элементов. Добавлено через 10 минут куку )))) http://www.cyberforum.ru/cpp-beginners/thread349242.html
описать функцию, которая заменяет все вхождения элемента C++
В составе программы описать функцию, которая заменяет в списке все вхождения элемента E1, значение которого введено с клавиатуры, на эле-мент E2, значение которого также введено с клавиатуры.
C++ Определить, является ли матрица магическим квадратом
Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. #include <stdio.h> #include <stdlib.h> int main() { int k,ki,kj,i,j,a;
C++ Запутался в флагах http://www.cyberforum.ru/cpp-beginners/thread349185.html
Запутался в флагах, переменная rez вычисляется некорректно. Подскажите, как избавиться от ошибки, а ещё лучше, показать правильный код программы :-#include <iostream.h> #include <iomanip.h> #include <stdlib.h> #include <conio.h> struct Node {int key; Node *l; Node *r; };
C++ Принадлежит ли точка фигуре Определить принадлежность точки областям, обозначенным прописными буквами A и B. Строчными буквами обозначены определяемые пользователем параметры рисунка. Координаты точки x и y и другие параметры рисунка вводятся пользователем. подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.09.2011, 14:47     Вывести сообщение о том, что все элементы в массиве равны
Цитата Сообщение от talis Посмотреть сообщение
diagon, зачем же два цикла (в min_element и в max_element), когда можно так:
Много букаф
Еще пара вариантов c STL
C++
1
2
3
4
template <class C> bool have_only_one_different_element( std::vector< C > vec )
{
        return std::unique( vec.begin(), vec.end() ) == vec.begin() + 1;
}
C++
1
2
3
4
5
template <class C> bool have_only_one_different_element( std::vector< C > vec )
{
        std::sort( vec.begin(), vec.end() );
        return *vec.begin() == *(vec.end() - 1);
}
C++
1
2
3
4
template <class C> bool have_only_one_different_element( const std::vector< C >& vec )
{
        return std::count( vec.begin(), vec.end(), *vec.begin() ) == (int) vec.size() ;
}
Можно еще кучу алгоритмов STL использовать, но суть не особо поменяется.

Последний вариант самый быстрый из всех возможных вроде. Хотя нет, можно быстрее.

Так побыстрее должно быть =\
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
 
template <class Forward_iterator> bool isnt_unique( Forward_iterator begin, Forward_iterator end )
{
    for ( Forward_iterator it = begin + 1; it != end ; ++it )
        if (*it != *begin)
            return false;
    return true;
}
 
int main()
{
        std::vector<int> arr (5, 0);
        std::cout << std::boolalpha << isnt_unique( arr.begin(), arr.end() ) << std::endl;
        
        arr[0] = 1;
        std::cout << std::boolalpha << isnt_unique( arr.begin(), arr.end() ) << std::endl;
}
 
Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru