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

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

Войти
Регистрация
Восстановить пароль
 
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
#1

Что делает pair? - C++

09.06.2013, 19:32. Просмотров 1976. Ответов 10
Метки нет (Все метки)

Можно пример посложнее(с map или ещё чем) с объяснениями?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 19:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что делает pair? (C++):

Реализовать пользовательский класс Pair (упрощённый аналог std::pair) - C++
Здравствуйте. Проблема с выводом. В приложенном задании, требуется сделать вывод как в примере. Мой вывод основан на вводе количества...

Как считать данные в vector<pair<int, pair<int, int>>> arr(m) ? - C++
Здравствуйте! Помогите, как считать данные данные в массив такого типа? vector&lt;pair&lt;int, pair&lt;int, int&gt;&gt;&gt; arr(m) Пытался вот так...

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

Что это за знак >> прочитал что это сдвиг вправо? что он делает - C++
int d=6, c=5,f; f = d &gt;&gt; c; cout&lt;&lt; f; вывод 0

Что это за метод?И что он делает? - C++
double func (double y, int k, int n){ double y1; for (int i=0; i&lt;=n+1;i++) y1=0; double t; t=0; y1=1; ...

Объясните что именно делает "x%d, y%d: " или что это в даном коде - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double rast(double x1, double y1, double x2, double y2) // Функція яка...

10
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
09.06.2013, 19:35 #2
http://www.cplusplus.com/reference/u.../pair/?kw=pair
http://en.cppreference.com/w/cpp/utility/pair
недостаточно?

Добавлено через 44 секунды
Это как бы объединение двух элементов, можно различных типов данных. При этом к первому можно будет обратиться через first, ко второму через second
3
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
09.06.2013, 19:50  [ТС] #3
читал как раз там ибо больше нигде не смог инфы найти, но а смысл от такого объединения? И там примеров нету, а если искать примеры в других местах, то там нету объяснения. По этому и задал вопрос здесь.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
09.06.2013, 19:55 #4
Используется когда нужно объединить логически две переменные:
C++
1
std::pair<char, int> p;
И каждой букве противопоставляем необходимое число.
Или например
C++
1
std::pair<std::string, int> result;
std::string - имя игрока int - количество очков. Логично объединить в один тип данных
2
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.06.2013, 20:10 #5
mzarb, например, это удобно для занесения данных в отображение (map).
1
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
09.06.2013, 20:37  [ТС] #6
А не проще сразу в map засовывать или pair нужен если нету такой возможности?
И ещё не пойму откуда взялись цифры в выводе в этом коде? Ведь вторую пару не указывали и даже если где-то указывалась эта вторая пара, то сами цифры странные, не понятно по какому принципу сгенерированные.

Добавлено через 1 минуту
BumerangSP, пример можно?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
09.06.2013, 20:43 #7
mzarb, там же
C++
1
frequencies[c]++;
увеличиваем значение .second на один

Можно использовать и без map, я вам объяснил назначение более общее, зачем вы цепляетесь к конкретике?
Можно делать и std::vector<std:air>
и std::set<std:air>
и std:air<> p[N];
и вообще как угодно. Это тип данных
2
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.06.2013, 20:48 #8
Цитата Сообщение от mzarb Посмотреть сообщение
А не проще сразу в map засовывать или pair нужен если нету такой возможности?
ну пойди напиши свой map, и реши что там тебе проще

Добавлено через 1 минуту
Цитата Сообщение от mzarb Посмотреть сообщение
пример можно?
пример чего?
2
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
09.06.2013, 20:55 #9
mzarb,
Цитата Сообщение от mzarb Посмотреть сообщение
И ещё не пойму откуда взялись цифры в выводе в этом коде? Ведь вторую пару не указывали и даже если где-то указывалась эта вторая пара, то сами цифры странные, не понятно по какому принципу сгенерированные.
смотри у тебя имеется обычный мар - а соответственно в нем могут храниться значения только с уникальными ключами, соответственно буквы из строки не повторяются! при вызове counting в map-e ищеется именно структура pair в которой first равен переданной букве и её second увеличивается на один - эта программа подсчитывает количество вхождений символов в строку
1
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
09.06.2013, 21:05 #10
пример использования:
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
#include <iostream>
#include <algorithm>
#include <cmath>
 
typedef std::pair<int, int> point; // создаем синоним
 
double calcLength(const int x, const int y)
{
    return sqrt(x*x + y*y);
}
 
int main()
{
    const int size = 5;
    point points[size];   // объявляем массив точек (пар)
    double lengths[size]; // удаленность точек от начала координат
    for (int i=0; i < size; i++)
    {
        // ввод точек
        std::cout << "Enter " << i+1 << " point x: ";
        std::cin >> points[i].first;
        std::cout << "Enter " << i+1 << " point y: ";
        std::cin >> points[i].second;
        // подсчитываем расстояние
        lengths[i] = calcLength(points[i].first, points[i].second);
    }
 
    // сортируем пузырьком в порядке убывания расстояний до центра координат
    for (int i=0; i < size; i++)
        for (int j=size-1; j > i; j--)
            if (lengths[i] < lengths[j])
            {
                std::swap(lengths[i], lengths[j]);
                std::swap(points[i], points[j]);
            }
 
    // выводим полученный результат
    for (int i=0; i < size; i++)
        std::cout << points[i].first << " " << points[i].second << std::endl;
}
1
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.06.2013, 21:49 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
mzarb, пример добавления в map?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <map>
int main()
{
    typedef std::map<int, double> MapType;
    MapType m;
    std::pair<int, double> p(11, 2.71);
    m.insert(p);
    m.insert(std::make_pair(10, 3.14)); // или
    //вывод на экран
    for (MapType::iterator pos = m.begin(); pos != m.end(); ++pos)
        std::cout << pos->first << ' ' << pos->second << '\n';
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 21:49
Привет! Вот еще темы с ответами:

Что делает программа? - C++
не могу понять что делает программа? #include &lt;iostream&gt; using namespace std; bool mystery(unsigned bits); int main() { ...

Что делает cin.get - C++
Вот код: #include &lt;iostream&gt; int main() { int a; std::cin &gt;&gt; a; std::cin.putback ('A'); ...

Что делает tellg? - C++
имеем вот такой кодstring str; ifstream in(FileName ); ifstream::streampos filesize = in.tellg(); str.reserve(filesize); почему...

Что делает код? - C++
цитата из переведённой книги Александреску по языку D: &quot;Если кто-то из ваших коллег прокачал самоуверенность до уровня Супермена, ...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
09.06.2013, 21:49
Ответ Создать тему
Опции темы

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