Программа добавляет разные строки в набор. Итератор проверяет набор для определенной строки, чего я хочу достичь, это получить строку, в которой итератор найдет эту определенную строку. Можно ли получить это с помощью набора или мне нужно создать вектор? Причина, по которой я использую наборы, заключается в том, что я также не хочу иметь дубликаты в конце. Это немного странно, я знаю, надеюсь, вы поймете.C++ Использование набора, итератора, поиск строки, где был найден дубликат
Edit: я хочу, чтобы получить номер строки исходного элемента уже существующий в наборе, если дубликат найден
#include <iostream>
#include <set>
#include <string>
#include <vector>
#include <atlstr.h>
#include <sstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
set<string> test;
set<string>::iterator it;
vector<int> crossproduct(9, 0);
for (int i = 0; i < 6; i++)
{
crossproduct[i] = i+1;
}
crossproduct[6] = 1;
crossproduct[7] = 2;
crossproduct[8] = 3;
for (int i = 0; i < 3; i++)
{
ostringstream cp; cp.precision(1); cp << fixed;
ostringstream cp1; cp1.precision(1); cp1 << fixed;
ostringstream cp2; cp2.precision(1); cp2 << fixed;
cp << crossproduct[i*3];
cp1 << crossproduct[i*3+1];
cp2 << crossproduct[i*3+2];
string cps(cp.str());
string cps1(cp1.str());
string cps2(cp2.str());
string cpstot = cps + " " + cps1 + " " + cps2;
cout << "cpstot: " << cpstot << endl;
it = test.find(cpstot);
if (it != test.end())
{
//Display here the line where "1 2 3" was found
cout << "i: " << i << endl;
}
test.insert(cpstot);
}
set<string>::iterator it2;
for (it2 = test.begin(); it2 != test.end(); ++it2)
{
cout << *it2 << endl;
}
cin.get();
return 0;
}
Что именно вы пытаетесь сделать. Ваш вопрос непонятен. – NathanOliver
В стороне: insert возвращает пару, содержащую first = iterator, в вставленный элемент и second = bool true, если элемент был вставлен и false, если он уже присутствует. Поэтому 'if (test.insert (cpstot) .second) {cout <<" i: "<< i << endl;}' заменит 'test.find' и' it! = Test.end() ' – user4581301
Вопрос: вам нужен номер строки оригинала или номер строки найденного дубликата? – user4581301