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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
#1

Сравнение элементов в векторе - C++

19.11.2012, 21:50. Просмотров 2168. Ответов 8
Метки нет (Все метки)

Подскажите как проверить на равенство поля объектов в векторе:
Делаю так:
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
 
#include <iostream>
#include <conio.h>
#include <vector>
#include <stdio.h>
#include <string>
#include <algorithm>
 
using namespace std;
 
 typedef struct 
{
    int    key1;
    int    key2;
    string  str;
    
}Data;
 
 
 bool operator==( Data &left, Data &right)
   {
       return left.key1==right.key1;
   }
 
 
void sort_keY2(vector<Data>&v)
{
    sort( v.begin(), v.end(), keY2);
}
 
void main()
 
{
vector<Data>v;
.
.
.
//объекты
 
for (int i=0;i<v.size();i++)
{
    if((v[i].key1==v[i+1].key1))
        sort_keY2(v); //ошибка вылетает
    
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 21:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение элементов в векторе (C++):

Сравнение векторов и замена слов в векторе - C++
Вводим n-е количество слов в векторе str. Имеется второй вектор dislike с определенными словами. Надо сравнить вектор str с вектором...

Сравнение строк в векторе и удаление их повторений - C++
Ошибка компиляции в строках с erase(). Прога считывает n строк, сравнивает их все. Если строки одинаковые — он выводит ее и удаляет все...

Сортировка элементов в векторе - C++
Доброго времени суток! Подскажите пожалуйста куда копать: есть вектор Vector &lt;Map &lt;String, String&gt; &gt; v_costs_of_period, состоящий из...

Удаление повторяющихся элементов в векторе - C++
Нужно перегрузить унарный оператор ~ что бы он удалял повторяющиеся элементы в векторе vector&amp; operator ~ () { if (count &gt; 0) ...

Откуда столько элементов в векторе? - C++
struct SReBuMa // research buildings manufacture { int life; vector &lt;elemental_resource&gt; cost; int produced_limit; int...

Поиск одинаковых элементов в векторе - C++
Здравствуйте , уже задавал этот вопрос и пользовался разными предложенными методами нахождения одинаковых чисел в векторе , но не...

8
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
19.11.2012, 21:52 #2
Ты передаешь не адрес, а сам вектор. И вообще,
C++
1
void sort_keY2(vector<Data>*v)
C++
1
sort_keY2(&v);
0
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 21:54  [ТС] #3
в смысле? куда в sort? Не в этом дело

передача по ссылке идёт
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 21:57 #4
Цитата Сообщение от Sawyer1988 Посмотреть сообщение
sort( v.begin(), v.end(), keY2);
Что такое keY2?
0
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 22:01  [ТС] #5
опс
C++
1
2
3
4
5
 bool keY2(const DataStruct &left,const DataStruct &right)
  {
      return left.key2>right.key2;
 
  }
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 22:10 #6
Исправьте DataStruct на Data и разместите перед void sort_keY2(vector<Data>&v). Должно скомпилится.
0
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 22:16  [ТС] #7
не не помогает, вылетает прога , даже если
C++
1
2
3
4
5
6
7
8
for (int i=0;i<v.size();i++)
{
    if(v[i].key1==v[i+1].key1)
    
        cout<<"asdsad"<<endl;
    
    
}
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 22:18 #8
Значит проблема где-то в main. Полный код покажите.
1
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 22:25  [ТС] #9
всё понял косяк в цикле
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0;i<v.size();i++)
{
    for (int j=i;j<v.size();j++)
    {
 
    if(v[i].key1==v[j].key1)
    {
        sort_keY2(v);
    }
    }   
}
всё работает, спасибо

Добавлено через 5 минут
не подскажите кстати как вот это можно сделать?

string str(также член структуры) заполняется из таблицы (таблица содержит 10 произвольных строк, индекс строки генерируется случайным образом)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 22:25
Привет! Вот еще темы с ответами:

Максимальное количество элементов в векторе - C++
Насколько длинный может быть std:vector? P.S. Под словом &quot;длинный&quot; я подразумеваю размер от 1000000 до 1000000000...

Перемещение и удаление элементов в векторе - C++
Eсть такой код: vector&lt;int&gt; v = {-3, -5, -6, 1, 2, 3}; for (size_t i = 0; i != v.size(); i++) { if (v &gt; 0) { ...

Алгоритмы STL Удаление элементов в векторе - C++
Банальный вопрос. vector&lt;int&gt; В нем разные числа могут повторяться. Хочу удалить заданное значение, полностью исключить его из вектора. ...

Функция, которая возвращает кол-во уникальных элементов в векторе - C++
Существует ли ф-я, которая возвращает кол-во уникальных элементов в векторе?


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
19.11.2012, 22:25
Ответ Создать тему
Опции темы

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