Код ошибки = 0x80070002 (MS Visual Studio) C ++ для поиска данных триплета из одного ключевого элемента - PullRequest
0 голосов
/ 30 мая 2020

введите здесь описание изображения

Как найти пару триплетов карты с одним элементом, например (4, (?,?)), Чтобы я знал, что int 4 -> как я могу найти его, потому что я получаю так много ошибок и четыре часа поиска возможного решения для фильтрации координат с помощью этого ключа.

 int k = *min_element(min1.begin(), min1.end());

 auto it = myninja.begin(); 
 it = find(myninja.begin(), myninja.end(), k);
 for (it = myninja.begin(); it != myninja.end(); it++) {
     p.row= (it->second).first;
     p.col = (it->second).second;
 }

это мои объявления

vector <pair<int, pair<int, int> > > myninja; 
    vector <int> min1; 

, и это где Я хочу выставить свое минимальное значение для A * -> f для минимального диапазона до цели

 int k = *min_element(min1.begin(), min1.end());

, чтобы сохранить фактическое значение из этого, я хочу обновить начальную точку с минимумом f ->, поэтому Я хочу указать точку (x, y), поэтому я подумал, что

vector <pair<int, pair<int, int> > > myninja;

будет лучшим, но всегда я хочу узнать, из какого значения f (n) оно исходит -> ошибка в итераторе / l oop или он отображает мне код ошибки

Я думаю, что я исхожу из функции поиска, потому что, возможно, он не может обработать int k (который я хочу искать в своих точках)

( F-значение, (x-координата, y-координата)

также это не работает

int k = *min_element(min1.begin(), min1.end());
auto result = std::find_if(myninja.begin(),myninja.end(),[k](const auto& mo){return mo.second == val; });

 //RETURN VARIABLE IF FOUND
  if (result != myninja.end())
  int foundkey = (result->second).first;

1 Ответ

0 голосов
/ 30 мая 2020
int s = myninja.size();
int j = min1.size(); 

for (int i = 0; i < s; i++)
{
min1.push_back(myninja[i].first);
}

int mic = min1[0];

for (int i = 0; i <j; i++)
 {
 if (min1[i] < mic)
 mic = min1[i];
 }

 cout << mic;

for (int i = 0; i < s; i++)
{
if (myninja[i].first == mic) {

// "first" and "second" are used to access 
// 1st and 2nd element of pair respectively 

p.row = myninja[i].second.first;
p.col = myninja[i].second.second;

q.push(objects(p.row, p.col, p.dist+1));

cout << "Min Punkt";
cout << " x " << p.row << " y " << p.col;

cout << "Distanz"; 
cout << p.dist;

visit[p.row][p.col] = true;
break;

}
}

// Finally it works but it saves now the same point again and again with the minimum of f.
// i am working on to delete or set it true so after the calculation -> get the new point with other f minimum till the goal.
...