Как игнорировать элементы, которые не встречаются второй раз в векторе - PullRequest
0 голосов
/ 27 октября 2019

Если вы посмотрите на код ниже, вы увидите, что он найдет количество вхождений элементов в одном векторе ar. Это означает, что он находит векторное местоположение того же числа, когда он появляется снова (учитывается, только если это произошло во второй раз).

Поскольку мне интересно найти элемент в векторе time, с соответствующим первым и вторым векторным положением появления элементов в векторе ar, я сделал это ниже:

#include<iostream>
#include<vector>
#include<map>

using namespace std;

int main() {
  double time1;
  double time2;
  vector<int> ar{ 1, 8, 6, 6, 2, 5, 7, 7, 7, 7, 8 };
    vector<int> time{ 100, 800, 600, 600, 502, 405, 700, 700, 700, 711, 118 };

  map<int, vector<size_t> > occurrences;

  for (size_t i = 0; i < ar.size(); ++i) {
    auto iter = occurrences.find(ar[i]);
    if (iter == occurrences.end()) {
      occurrences[ar[i]].push_back(i);
    }
    else { //print the distance between the current and the previous occurrence
      cout << "distance with first occurrence of number "  << ar[i] << " is " << (i - iter->second[0])<< "\n";

    //time1= ar2[iter->second[0]];
    time2 = time[i];

    }

    //cout << "first occurance time" <<time1<<endl;
    cout << "second occurance element"<<ar[i]<<"the second occurance time is"<<time2<<"endl"<<endl;

  }
  return 0;
} 

Единственная проблема в приведенном выше коде состоит в том, что он находит элементы вектора из time, хотя элементы в одной и той же позиции в векторе ar не повторялись. Что это означает, что я хочу рассмотреть возможность распечатывания векторного элемента time, когда получаю повторяющиеся элементы из вектора ar. И, следовательно, я выведу ту же самую векторную позицию ar из вектора time.

Например, первый элемент 1 в векторе ar не был повторен, поэтому яхочу игнорировать элементы 100 из вектора time. Кроме того, элемент ar[7] равен 7, который появился в векторе больше, чем во второй раз, поэтому я также не хочу печатать ту же самую векторную позицию из time.

OUTPUT: enter image description here

Из вывода я пометил красным цветом, который я хочу игнорировать. Причина в том, что на них выводятся элементы (1, 8 и т. Д.) Из вектора ar, которые больше не появляются. Я также хочу игнорировать положение вектора, когда они появляются более чем в два раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...