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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 21:50     Сравнение элементов в векторе #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
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); //ошибка вылетает
    
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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);
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
19.11.2012, 21:54  [ТС]     Сравнение элементов в векторе #3
в смысле? куда в sort? Не в этом дело

передача по ссылке идёт
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 21:57     Сравнение элементов в векторе #4
Цитата Сообщение от Sawyer1988 Посмотреть сообщение
sort( v.begin(), v.end(), keY2);
Что такое keY2?
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;
 
  }
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 22:10     Сравнение элементов в векторе #6
Исправьте DataStruct на Data и разместите перед void sort_keY2(vector<Data>&v). Должно скомпилится.
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;
    
    
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 22:18     Сравнение элементов в векторе #8
Значит проблема где-то в main. Полный код покажите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 22:25     Сравнение элементов в векторе
Еще ссылки по теме:

C++ Как применяя erase удалить в векторе n элементов, начиная с номера k?
Максимальное количество элементов в векторе C++

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

Или воспользуйтесь поиском по форуму:
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 произвольных строк, индекс строки генерируется случайным образом)
Yandex
Объявления
19.11.2012, 22:25     Сравнение элементов в векторе
Ответ Создать тему
Опции темы

Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru