Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94

Пробежать все элементы контейнера

12.01.2016, 20:44. Показов 2751. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень странная ошибка возникает в цикле:
C++
1
for (std::vector<int>::iterator it = Z.begin() ; it != Z.end(); ++it)
43 54 main.cpp [Error] no match for 'operator!=' (operand types are 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' and 'std::vector<MyStruct>::iterator {aka __gnu_cxx::__normal_iterator<MyStruct*, std::vector<MyStruct> >}')

Z - здесь вектор массива структур.

Если взять какой-нибудь стандартный пример, например - http://www.cplusplus.com/refer... tor/begin/ то все работает. Непонятно
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2016, 20:44
Ответы с готовыми решениями:

Как лучше всего пробежать все элементы контейнера?
Речь о следующем. Есть vector. Я хочу пробежать все его элементы, но походу я буду проверять удовлетворяют они определенному условию или...

Путешествие коня. Почему конь не хочет пробежать все возможные варианты?
Всем привет. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

Удалить элементы из контейнера map
#include &lt;iostream&gt; #include &lt;map&gt; using namespace std; int main() { map&lt;int, int&gt; map1; map1 = 2; map1 =...

10
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
12.01.2016, 20:47
Лучший ответ Сообщение было отмечено FortranDLL как решение

Решение

По ошибкам компиляции видно, что тип, на который ссылается итератор, не тот.
Цитата Сообщение от FortranDLL Посмотреть сообщение
C++
1
std::vector<int>::iterator
Вероятно так
C++
1
std::vector<MyStruct>::iterator
2
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
12.01.2016, 20:48  [ТС]
Вот блин. Спасибо!
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
12.01.2016, 20:49
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

используйте range-for из C++11 и не мучайтесь.
2
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
12.01.2016, 20:56  [ТС]
Тогда еще сразу вопрос. Пусть вот такой массив структур:
C++
1
2
3
4
5
struct MyStruct
{
  int A;
  int B;
};
Как теперь из вектора Z выцепить A соответствующую данному итератору?
По логике что-то в духе
C++
1
*Z.A
Но не работает
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
12.01.2016, 21:02
FortranDLL,
Цитата Сообщение от FortranDLL Посмотреть сообщение
C++
1
*Z.A
Сначала "применяется" оператор доступа к члену класса, потом оператор разыменования; стоит знать приоритет операторов.
C++
1
(*Z).A
Либо так:
C++
1
Z->A
1
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
12.01.2016, 21:11  [ТС]
Ни один из вариантов не работает. Не понимаю:
47 37 main.cpp [Error] no match for 'operator*' (operand type is 'std::vector<MyStruct>')
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
12.01.2016, 21:15
FortranDLL, т.е. Z - это вектор? Тогда
C++
1
Z[index].A
1
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
12.01.2016, 21:39  [ТС]
Тогда итератор не нужен.

Добавлено через 23 минуты
Может ли эта проблема быть из-за версии C++?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
12.01.2016, 21:49
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

FortranDLL, В чём проблема использовать диапазонный цикл for?
C++
1
2
3
for( const auto& elem : Z ) {
    cout << elem << ' '; // к примеру
}
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
13.01.2016, 00:33
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
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
 
struct MyStruct;
typedef std::vector <MyStruct> Structure;
 
struct MyStruct
{
    int a;
    int b;
};
 
int main()
{
    srand(time(NULL));
 
    const size_t N = 10;
    Structure v(N);
 
    for (size_t i = 0 ; i < N; ++i)
    {
        v[i].a = rand() % 100;
        v[i].b = rand() % 200;
        std::cout << v[i].a << ' ' << v[i].b << std::endl;
    }
 
    std::cout << std::endl;
 
    for (Structure::iterator iter = v.begin() ; iter != v.end() ; ++iter)
    {
        std::cout << iter->a << ' ' << iter->b << std::endl;
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2016, 00:33
Помогаю со студенческими работами здесь

Из каждого элемента контейнера map вычесть среднее арифметическое контейнера
Контейнер map, тип элементов Int 3.Из каждого элемента вычесть среднее арифметическое контейнера

Найти минимальный и максимальный элементы контейнера и поменять их местами.
вот собственно и задача Найти минимальный и максимальный элементы контейнера и поменять их местами.

MDI Forms: все элементы контейнера (владельца) перекрывают дочернюю форму
при создании в MDI контейнере дочерних форм, все элементы контейнера(владельца), перекрывают дочернюю форму. помогите сделать все дочерние...

Пробежать по первой таблице собрать все его virtuemart_media_id и вывести только их из второй таблицы
имеетбться две таблицы 1) _virtuemart_manufactures_medias - имеет поля id и virtuemart_media_id 2) _virtuemart_medias -...

Окрасить все положительные элементы матрицы в красный цвет, все отрицательные в зеленый, а все нулевые элементы в белый.
ПОМОГИТЕ ПОЖАЛУЙСТА!на паскаль абс 1) Целочисленная матрица n-го порядка создается из случайных чисел. Окрасить все положительные...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru