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

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

Войти
Регистрация
Восстановить пароль
 
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,406
Записей в блоге: 5
Завершенные тесты: 4
#1

Отсортировать массив пар ключ-значение по ключу - C++

23.02.2013, 21:07. Просмотров 1053. Ответов 3
Метки нет (Все метки)

Здравствуйте. Сабж: имеется такая структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct KeyValuePair
{
public:
    int Key, Value;
 
    KeyValuePair(int key, int value)
    {
        Key = key;
        Value = value;
    }
 
    KeyValuePair()
    {
        Key = Value = 0;
    }
};
Пытаюсь отсортировать: не получается, вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int Search2 (KeyValuePair a[], int n, int k)
{
  KeyValuePair *b = CopyWithExpanding(a,n,k);
  vector<KeyValuePair> myvector2 (b, b+n); 
 
  cout << "\n\nBEFORE SORT:" << endl;
  for (vector<KeyValuePair>::iterator it=myvector2.begin(); it!=myvector2.end(); ++it)
      cout << "Key = " << (*it).Key << "\tValue = " << (*it).Value << endl;
  cout << '\n';
 
 
  sort (myvector2.begin()+4, myvector2.end(), comparator);
 
 
  cout << "\n\nAFTER SORT:" << endl;
  for (vector<KeyValuePair>::iterator it=myvector2.begin(); it!=myvector2.end(); ++it)
      cout << "Key = " << (*it).Key << "\tValue = " << (*it).Value << endl;
  cout << '\n';
  return 0;
}
чяднт?
Весь код целиком:
Кликните здесь для просмотра всего текста
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <algorithm>
#include <vector>       // std::vector
 
using namespace std;
 
struct KeyValuePair
{
public:
    int Key, Value;
 
    KeyValuePair(int key, int value)
    {
        Key = key;
        Value = value;
    }
 
    KeyValuePair()
    {
        Key = Value = 0;
    }
};
 
 
int Search0 (KeyValuePair[], int, int); 
int Search1 (KeyValuePair[], int, int); 
int Search2 (KeyValuePair[], int, int);
 
int main()
{
    srand ((unsigned) time(0));
    const int n = 12;
    KeyValuePair a[n];
    for (int i = 0; i < n; i++)
    {
        a[i].Key = rand() % (n/2);
        a[i].Value = rand();
    }
 
    cout << "Key\tValue " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << a[i].Key << "\t" << a[i].Value << endl;
    }
    int result0 = Search0(a,n,2);
    cout << result0 << endl;
    int result1 = Search1(a,n,2);
    cout << result1 << endl;
    int result2 = Search2(a,n,2);
    cout << result2 << endl;
    system("pause");
    return 0;
}
 
int Search0 (KeyValuePair a[], int n, int k)
{
    for (int i = 0; i < n; i++) 
        if (k == a[i].Key)      
            return a[i].Value;  
    return -1;
}
 
KeyValuePair* CopyWithExpanding(KeyValuePair a[], int n, int k)
{
    KeyValuePair *result = new KeyValuePair[n+1];
    for (int i = 0; i < n; i++)
        result[i] = a[i];
    result[n].Key = k;
    return result;
}
 
int Search1 (KeyValuePair a[], int n, int k)
{
    KeyValuePair *b = CopyWithExpanding(a,n,k);
    int i = 0;
    for (; b[i].Key != k; i++)
        {}
    int result = i<n? b[i].Value: -1;
    delete(b);
    return result; 
}
 
bool myfunction(int left, int right)
{
    return left < right;
}
 
bool comparator(KeyValuePair left, KeyValuePair right)
{
    return left.Key < right.Key;
}
 
int Search2 (KeyValuePair a[], int n, int k)
{
  KeyValuePair *b = CopyWithExpanding(a,n,k);
  vector<KeyValuePair> myvector2 (b, b+n); 
  cout << "\n\nBEFORE SORT:" << endl;
  for (vector<KeyValuePair>::iterator it=myvector2.begin(); it!=myvector2.end(); ++it)
      cout << "Key = " << (*it).Key << "\tValue = " << (*it).Value << endl;
  cout << '\n';
  sort (myvector2.begin()+4, myvector2.end(), comparator);
  cout << "\n\nAFTER SORT:" << endl;
  for (vector<KeyValuePair>::iterator it=myvector2.begin(); it!=myvector2.end(); ++it)
      cout << "Key = " << (*it).Key << "\tValue = " << (*it).Value << endl;
  cout << '\n';
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2013, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отсортировать массив пар ключ-значение по ключу (C++):

Массив: отсортировать массив в порядке возрастания и найти количество соседних пар элементов отличающихся между собой - C++
Дано массив целых чисел 20, отсортировать его в порядке возрастания и найти количество соседних пар элементов отличающихся между собой ...

Связный список (отсортировать по ключу) - C++
нужно отсортировать связный список по ключу, проверьте, пожалуйста, я уже совсем запутался... void Sorted_List::insert(key_t...

Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию - C++
2) В массиве a ...a встречаются по одному разу все целые числа от 0 до n, кроме одного. За n действий найти пропущенное число с конечной...

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать - C++
Добрый Вечер! Написал первую часть программы по этому заданию&quot;Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

Создание словаря ключ - значение на C - C++
Здравствуйте! Нужно создать структуру словарь типа ключ - значение на языке C. С возможностью добавления, удаления, очистки и удаления по...

Поменять местами ключ и значение в map - C++
Ребят, как в map поменять местами ключ и значение? Мне из файла нужно считывать слова и потом вывести все слова которые встретились (не...

3
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,406
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 21:08  [ТС] #2
Вернее что-то он поменял, но не все:
Отсортировать массив пар ключ-значение по ключу

Тьфу ты, просто в настрйоках +4 поставил (Скопировал из примера применения сортировки, забыл убрать). Спасибо!)
0
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,406
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 21:26  [ТС] #3
Но вопрос в другом: нужно на выход получить массив, а не вектор, потому что нужна работа именно с массивом. Как можно это сделать?

Добавлено через 3 минуты
Фу, дурак, заменил вектор на обычный массив, все заработало. Спасибо еще раз За чтение сего бреда
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2013, 21:27 #4
Цитата Сообщение от Psilon Посмотреть сообщение
Но вопрос в другом: нужно на выход получить массив, а не вектор, потому что нужна работа именно с массивом. Как можно это сделать?
из какого вектора?

Цитата Сообщение от Psilon Посмотреть сообщение
C++
1
2
3
4
bool comparator(KeyValuePair left, KeyValuePair right)
{
 return left.Key < right.Key;
}
чавой не ссылки передаешь
C++
1
2
3
4
bool comparator(const KeyValuePair& left, const KeyValuePair& right)
{
 return left.Key < right.Key;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2013, 21:27
Привет! Вот еще темы с ответами:

«ключ-значение» class база данных ГАИ - C++
есть созданы 2 класса помогите с реализацией «ключ-значение» мне нужно что бы данные которые я записал в классе ViolationList я мог...

Помогите разобраться со стыковкой пар ключ=значение - PHP
Привет! Есть 2 селекта, в одном цены (от), во втором тоже цены (до). Сделал так чтобы значение во втором менялось в зависимости от...

Отсортировать Массив по Ключу - PHP
Есть массив Сначало я беру его под json_decode. Но интересует как отсортировать его под ключ price. Добавлено через 21...

Есть ли в Java встроенная структура данных типа словарь - список пар {ключ : значение} ? - Java SE
Здравствуйте! Есть ли в Java встроенная структура данных типа словарь - список пар {ключ : значение} ? Upd. Вспомнил ключевое слово -...


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

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

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