У меня проблема с использованием find на двумерных массивах. Каждый раз, когда я пытаюсь выполнить такую находку, я получаю ununderstandable ошибкуНевозможно использовать find() с двумерным массивом
Мой код:
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int st[200*1000][2];
int si[200*1000][2];
int main() {
if (find(si, si+200000, true) == si+200000){
//do something
}
for (int j = 0; j < ileSt; j++){
for (int k = 0; k < 2; k++){
if (find(st[j], st[j]+2, si[znakSi][k]) != st[j]+2){
//do another thing
}
}
}
return 0;
}
Ошибка:
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
from /usr/include/c++/5/bits/char_traits.h:39,
from /usr/include/c++/5/ios:40,
from /usr/include/c++/5/ostream:38,
from /usr/include/c++/5/iostream:39,
from prog.cpp:1:
/usr/include/c++/5/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [with _Iterator = int (*)[2]; _Value = const bool]':
/usr/include/c++/5/bits/stl_algo.h:120:14: required from '_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = int (*)[2]; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const bool>]'
/usr/include/c++/5/bits/stl_algo.h:161:23: required from '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = int (*)[2]; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const bool>]'
/usr/include/c++/5/bits/stl_algo.h:3790:28: required from '_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = int (*)[2]; _Tp = bool]'
prog.cpp:19:31: required from here
/usr/include/c++/5/bits/predefined_ops.h:194:17: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
{ return *__it == _M_value; }
^
Кроме того, это мой первый вопрос, так что если вы думаете, это может быть написано лучше, не стесняйтесь редактировать его!
он, вероятно, хотел, чтобы проверить каждый первый элемент подрешетки, так что код не будет работать. почему бы не использовать только петли for() и создать собственную подпрограмму find? std :: find good только для одномерных случаев.И должно быть (int) true – Swift
@Swift: Спасибо. Было непонятно, каково было его намерение, но вы можете быть правы. Отредактировано для включения ваших комментариев. – Edy