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

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

29.09.2016, 18:05. Показов 16406. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru