Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.06.2017
Сообщений: 20
1

For(auto i:n) как узнать номер элемента в такой записи?

08.02.2019, 19:45. Показов 1125. Ответов 4

C++
1
2
3
4
5
vector<string>a{"a","s","f"};
    for(auto i:a)
    {
        printf("%s ",i.c_str());
    }
как в этом коде узнать номер элемента, например проверить является ли он последним?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2019, 19:45
Ответы с готовыми решениями:

Узнать auto increment записи в таблицы
Народ я заношу с формы запись сразу в две таблицы и суть в том что одна из таблиц должна сдержать в...

Как на VBA узнать номер записи и общее количество.
Добрый вечер всем. Интересует такой вопрос. Есть разделенная таблица, в поле навигации...

Как узнать номер выделенного элемента в ListBox?
Как узнать номер выделенного элемента в ListBox?

Как при создании записи узнать номер ее ключевого поля
Здравствуйте, мне бы хотелось узнать, как после выполнения sql-запроса для создания новой записи в...

4
Модератор
Эксперт С++
11482 / 9400 / 5649
Регистрация: 18.12.2011
Сообщений: 25,114
08.02.2019, 19:52 2
Лучше это делать через итератор:
C++
1
2
3
4
5
6
7
    vector<string>a{"a","s","f"};
    for(auto p=a.begin();p!=a.end();++p)
    {
        if(p==a.end()-1)
          cout<<"last ";
        cout<<*p<<endl;
    }
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
08.02.2019, 19:56 3
Если элементы не уникальны, то никак это проверить не удастся, т.к. range-based for берет значение, что хранит контейнер, т.е. это даже не итератор. Если вам нужен номер элемента или итератор, то используйте цикл for в обычном виде:
C++
1
2
3
4
5
6
vector<string> a = {"One", "Two", "Three"};
for(int i = 0; i < a.size(); i++)
    cout << '#' << i << ": " << a[i] << endl;
//или так, но не желательно, если нужен номер эл.
for(auto it = a.begin(); it != a.end(); it++)
    cout << '#' << distance(it, a.end()) << ": " << *it << endl;
0
15359 / 8306 / 2015
Регистрация: 30.01.2014
Сообщений: 14,183
08.02.2019, 20:11 4
Цитата Сообщение от Georgiy1108 Посмотреть сообщение
как в этом коде узнать номер элемента, например проверить является ли он последним?
Лучше не надо придумывать проблемы, которые потом героически решать нужно будет

Но, конкретно в случае вектора вы можете сделать так:
C++
1
2
3
4
5
    std::vector<std::string> a{"a","s","f"};
    for(auto & i : a) // <- обязательно ссылка
    {
        printf("[%d] %s ", std::distance(&a.front(), &i), i.c_str());
    }
0
rat0r
08.02.2019, 20:43     For(auto i:n) как узнать номер элемента в такой записи?
  #5

Не по теме:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <vector>
#include <range/v3/view/enumerate.hpp>
using namespace std;
 
namespace rsv = ranges::view;
 
int main()
{
    vector<string> a{"a","s","f"};
    for (auto&& [i, v] : rsv::enumerate(a))
        cout << i << ": " << v << '\n';
}
https://wandbox.org/permlink/lCu80d4DWskh1Uou

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2019, 20:43

Как узнать номер элемента, который был нажат?
&lt;div id=&quot;disks&quot;&gt; &lt;/div&gt; var d = $('#disks'); for (var i = 1; i&lt;=4; i++){ ...

В каждой строке матрицы найти максимум и его номер, затем номер элемента, который меньше (макс/2) и узнать его номер
Не можете подсказать, как все сделать в цикле Имеется матрицы, нужно в каждой строке найти...

Узнать номер записи в DataTable по выбраной записи в DataGridView
Начнем по порядку: есть главная форма, на ней грид заполненный из датасета через биндинг Есть...

Узнать номер записи по id (SQLite)
Привет! Осваиваю SQLite, столкнулся с проблемой. Мне нужно получить номер записи, по id записи......


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru