Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/75: Рейтинг темы: голосов - 75, средняя оценка - 4.60
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

Как узнать индекс элемента массива, зная итератор на этот элемент?

29.09.2016, 18:05. Показов 16524. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
#include <algorithm>
 
size_t get_index
    (
        const std::vector<int> & container,
        const std::vector<int>::iterator iter
    )
{
    size_t index = 0;
 
    for ( auto it = container.begin(); it != iter; ++it )
    {
        if ( it == iter )
            break;
        else
            ++index;
    }
 
    return index;
}
 
int main()
{
    std::vector<int> ivec
    {
        31, 26, 59, 71, 34, 58, 99, 44, 11, 88, 59, 22, 70
    };
 
    auto iter_to_max = std::max_element( ivec.begin(), ivec.end() );
    auto iter_to_min = std::min_element( ivec.begin(), ivec.end() );
 
    std::cout
        << "Index of maximal element is: "
        << get_index( ivec, iter_to_max )
        << "\nIndex of minimal element is: "
        << get_index( ivec, iter_to_min );
 
    return 0;
}
Существует ли какое-то библиотечное решение для нахождения индекса элемента по итератору?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2016, 18:05
Ответы с готовыми решениями:

ListBox узнать текст зная индекс элемента и узнать индекс зная текст элемента
Мне нужно что-то в этом роде for(int b ; b &lt; listBox1.Items.Count ; b++) { string name = Узнаем текст по индексу b; }

Как узнать индекс элемента ListBox, зная только его текст
И снова всем Добрый день! Не давно разобрался со сравнением элементов в listbox. Теперь у меня появился другой вопрос. Мне необходимо...

Узнать текст listboxa зная индекс элемента
Добрый день! Подскажите, как получить текст строчки listboxa, зная индекс этого элемента ????

4
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
29.09.2016, 18:08
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

gru74ik, std::distance пробовали?
2
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
29.09.2016, 18:14  [ТС]
GbaLog-, нет. Сейчас гляну.

Добавлено через 3 минуты
GbaLog-, то, что надо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<int> ivec
    {
        31, 26, 59, 71, 34, 58, 99, 44, 11, 88, 59, 22, 70
    };
 
    auto iter_to_max = std::max_element( ivec.begin(), ivec.end() );
    auto iter_to_min = std::min_element( ivec.begin(), ivec.end() );
 
    std::cout
        << "Index of maximal element is: "
        << std::distance( ivec.begin(), iter_to_max )
        << "\nIndex of minimal element is: "
        << std::distance( ivec.begin(), iter_to_min );
 
    return 0;
}
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
29.09.2016, 18:20
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

distance или можно вручную посчитать
C++
1
2
3
4
// val 10 4 5 7 3 4 8 15 1 18
vector<int>::iterator i=find(val.begin(),val.end(),1);
vector<int>::difference_type c=i-val.begin();
cout<<c<<endl;  //  индекс равен 8
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
29.09.2016, 18:21
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Ну и коли это вектор, то можно просто
C++
1
iter_to_max - ivec.begin();
Добавлено через 1 минуту
gru74ik, и есть алгоритм std::minmax_element.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2016, 18:21
Помогаю со студенческими работами здесь

Как узнать индекс элемента массива?
Доброго времени суток Подскажите пожалуйста как узнать индекс элемента массива?

Как узнать индекс элемента в DropDownList чтобы удалить элемент из List<T>?
У меня есть список, в текст боксы вбиваю имена и фамилии совершенно рандомные, они выводятся в лейбл и в дропдаунлист, в дропдаунлисте...

Как узнать индекс нажатого элемента массива
Есть такой список: &lt;ul id=&quot;navigation&quot;&gt; &lt;li class=&quot;nav active&quot;&gt;&lt;/li&gt; &lt;li class=&quot;nav&quot;&gt;&lt;/li&gt; &lt;li...

Как узнать индекс столбца в dataGrid, зная содержимое заголовка?
Здравствуйте! Знает ли кто-нибудь, как узнать индекс столбца, зная, что написано в его заголовке? У меня есть dataGrid,...

Узнать индекс максимального элемента второй половины массива
Нам нужно узнать номер максимального элемента второй половины массива t с 20 элементов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru