Другие языки программирования и технологии

Поиск значения в векторе с помощью std::find C++

Как найти значение в двумерном векторе по столбцам?

vector< vector< int > > z(n);
std::find(z[0].begin(), z[0].end(), VALUE) != z[0].end() // это мы ищем в строке 0 элемент VALUE.
А как найти в столбце 1 элемент VALUE? Никак не могу переписать этот фрагмент
Toomas Vana
Toomas Vana
35
На исходном векторе векторов с помощью функции std::find() никак.

Нужно либо пересобрать столбец в новый вектор, и там найти. Либо обойтись без функции std::find() и найти на исходном векторе векторов с помощью цикла.
Илья Коваль
Илья Коваль
6 159
Лучший ответ
#include < iostream >
#include < windows.h >
#include < vector >
#include < algorithm >
#include < functional >
#include < iomanip >

using namespace std;

void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
system("color 0A");

unsigned size_x = 15,
size_y = 4;

vector < vector < int > > v(size_y);
function < int() > Filler_c = []()
{
int t;
t = -50 + rand() % 101;
return t;
};
function < vector < int >() > Filler = [size_x, Filler_c]()
{
vector < int > str(size_x);
generate(str.begin(), str.end(), Filler_c);
return str;
};
generate(v.begin(), v.end(), Filler);

cout << "Сгенерированная матрица" << endl;
for (auto t : v)
{
for (auto tt : t)
{
cout << setw(5) << tt;
}
cout << endl << endl;
}

int value = 10;
vector < pair < unsigned, unsigned > > w;
cout << "Введите номер столбца для поиска value ";
unsigned nn;
cin >> nn;
for (unsigned p = 0; p < v.size(); ++p)
{
if (v[p][nn] == value)
{
w.push_back(pair < unsigned, unsigned >(nn, p));
}
}

cout << "Индексы всех вхождений искомого элемента" << endl;
for (auto t : w)
{
cout << t.first << " " << t.second << endl;
}

system("pause");
}
Artem .
Artem .
8 552