Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование find в vector, не понимаю почему не работает 
:(
    Опции темы
fuckingniger
Дата 19.6.2011, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



Код

#include <iostream>  //стандартная библиотека
#include <time.h> //случайные числа
#include <stdio.h> //
#include <windows.h> // для HANDLE, курсора, цвета
#include <conio.h>  //для kbhit
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    
    vector<COORD>test;
    COORD new_1,new_2;
    new_1.X=1;
    new_1.Y=1;
    new_2.X=2;
    new_2.Y=2;
    test.push_back(new_1);
    test.push_back(new_2);
    test.push_back(new_2);
    vector<COORD>::iterator u=find(test.begin(),test.end(),new_1);
    
    return 0;
}


ошибки

Код

1>------ Построение начато: проект: test, Конфигурация: Debug Win32 ------
1>Построение начато 19.06.2011 16:49:34.
1>InitializeBuildStatus:
1>  Обращение к "Debug\test.unsuccessfulbuild".
1>ClCompile:
1>  new.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(41): error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "_COORD" (или приемлемое преобразование отсутствует)
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\guiddef.h(192): может быть "int operator ==(const GUID &,const GUID &)" [найдено при поиске с зависимостью от аргументов]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(470): или       "bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(475): или       "bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(481): или       "bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(408): или       "bool std::operator ==(const std::error_code &,const std::error_condition &)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(416): или       "bool std::operator ==(const std::error_condition &,const std::error_code &)"
1>          при попытке сопоставить список аргументов "(_COORD, const COORD)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(74): см. ссылку на создание экземпляров функции шаблон при компиляции "_InIt std::_Find<_COORD*,_Ty>(_InIt,_InIt,const _Ty &)"
1>          with
1>          [
1>              _InIt=_COORD *,
1>              _Ty=COORD
1>          ]
1>          c:\users\redwhite\documents\visual studio 2010\projects\test\new.cpp(22): см. ссылку на создание экземпляров функции шаблон при компиляции "_InIt std::find<std::_Vector_iterator<_Myvec>,COORD>(_InIt,_InIt,const _Ty &)"
1>          with
1>          [
1>              _InIt=std::_Vector_iterator<std::_Vector_val<COORD,std::allocator<COORD>>>,
1>              _Myvec=std::_Vector_val<COORD,std::allocator<COORD>>,
1>              _Ty=COORD
1>          ]
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.81
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========



что я не так делаю?

Это сообщение отредактировал(а) fuckingniger - 19.6.2011, 15:49
PM MAIL   Вверх
rudvil
Дата 19.6.2011, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 2
Всего: 3



У типа/структуры COORD не определен оператор равенства "==", поэтому и ругается.

Добавлено через 11 минут и 47 секунд
Можно так извратиться
Код
#include <iostream>  //стандартная библиотека
#include <ctime> //случайные числа
#include <cstdio> //
#include <windows.h> // для HANDLE, курсора, цвета
#include <conio.h>  //для kbhit
#include <string>
#include <vector>
#include <algorithm>

struct COORD_ADAPTER {
  COORD_ADAPTER(const COORD& coord): coord_(coord) { }
  COORD coord_;
};

bool operator==(const COORD& coord, const COORD_ADAPTER& coord_a) {
  return coord.X == coord_a.coord_.X && coord.Y == coord_a.coord_.Y;
}

using namespace std;
int main()
{
    
    vector<COORD>test;
    COORD new_1,new_2;
    new_1.X=1;
    new_1.Y=1;
    new_2.X=2;
    new_2.Y=2;
    test.push_back(new_1);
    test.push_back(new_2);
    test.push_back(new_2);
    vector<COORD>::iterator u=find(test.begin(),test.end(), COORD_ADAPTER(new_1));
    
    return 0;
}

--------------------
xor
PM MAIL Skype   Вверх
boostcoder
Дата 19.6.2011, 16:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



а можно заюзать find_if ;)
PM WWW   Вверх
boostcoder
Дата 19.6.2011, 16:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



а такой вариант чем не устраивает?
Код

#include <iostream>  //стандартная библиотека
#include <ctime> //случайные числа
#include <cstdio> //
//#include <windows.h> // для HANDLE, курсора, цвета
//#include <conio.h>  //для kbhit
#include <string>
#include <vector>
#include <algorithm>

struct COORD {
   int X;
   int Y;
};

bool operator==(const COORD& l, const COORD& r) {
   return l.X == r.X && l.Y == r.Y;
}

int main() {
   std::vector<COORD>test;
   COORD new_1,new_2;
   new_1.X=1;
   new_1.Y=1;
   new_2.X=2;
   new_2.Y=2;
   test.push_back(new_1);
   test.push_back(new_2);
   test.push_back(new_2);
   std::vector<COORD>::iterator u=std::find(test.begin(),test.end(), new_2);
   std::cout << std::distance(test.begin(), u) << std::endl;
   return 0;
}

http://liveworkspace.org/code/54bb3b5f376b...98673241a63f836
PM WWW   Вверх
fuckingniger
Дата 19.6.2011, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



а как find_if использовать?
PM MAIL   Вверх
boostcoder
Дата 19.6.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



fuckingniger, ты доку принципиально не читаешь?
http://cplusplus.com/reference/algorithm/find_if/
PM WWW   Вверх
fuckingniger
Дата 19.6.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



не люблю английский)
я кстати в том примере не понял кое-что

IsOdd - функция с входными параметрами

а её используют без них в этой строчке
Код

it = find_if (myvector.begin(), myvector.end(), IsOdd);


и что-то ваще не разобрался что тут происходит(
PM MAIL   Вверх
boostcoder
Дата 19.6.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



делайте так, как я показал несколькими постами выше.

Цитата(fuckingniger @  19.6.2011,  17:47 Найти цитируемый пост)
не люблю английский

значит, и он вас.
PM WWW   Вверх
fuckingniger
Дата 19.6.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



ну у нас это взаимно)))


а там  же find_if не используется!(выше)
PM MAIL   Вверх
boostcoder
Дата 19.6.2011, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(fuckingniger @  19.6.2011,  18:03 Найти цитируемый пост)
а там  же find_if не используется!

ну дык smile 
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.