В C ++, как вернуть индекс массива, если введенные пользователем совпадения с введенным массивом? - PullRequest
2 голосов
/ 29 августа 2009

Я хотел знать, как мы можем получить индекс массива, если введенный пользователем массив соответствует входному массиву?

Например:

Массив ввода = [1,2,3,4] и пользователь ввел Массив = [2,3], чем я должен получить вывод в качестве индекса, где оба массива совпадают: 1.

Руководство будет высоко оценено.

1 Ответ

4 голосов
/ 29 августа 2009

Используйте алгоритм поиска STL , который выполняет именно то, что вы хотите: «Алгоритм search () ищет элементы [start2, end2) в диапазоне [start1, end1)». Вам нужно будет указать указатели на начало и конец двух массивов; Вы получаете конечный указатель для массива, добавляя его длину к его начальному указателю.

Лучше, используйте вектор STL для хранения ваших данных вместо массива, а затем вы можете просто вызвать vec.begin () и vec.end (), чтобы получить нужные итераторы.

Редактировать: Чтобы сделать это без std :: search, следуйте примеру по предоставленной мной ссылке, которая показывает, как можно выполнить поиск. Если вы делаете это в стиле C, вы будете использовать указатели (например, int *), а не ForwardIterator. Единственный хитрый бит - это часть вне цикла, где они выясняют, какой предел должен быть установлен - это превратится в некоторую арифметику указателей.

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