Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как вывести номер итератора в стандартный поток cout - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача: Отгадать цифру, проверить на честность http://www.cyberforum.ru/cpp-beginners/thread648926.html
Описание Tom и Jerry играют в игру на отгадку чисел, Tom загадывает число, а Jerry отгадывает. Область цифр в пределах от 1 до 10. Jerry называет число, а Tom отвечает too high или too low или...
C++ Стек Здравствуйте,помогите найти понятную реализую кода стека с объяснениями.заранее благодарю Добавлено через 27 секунд Не STL http://www.cyberforum.ru/cpp-beginners/thread648922.html
C++ Функция вычисления корней квадратного уравнения
Почему то корни не выводит...что не так? #include "iostream" #include "conio.h" #include "math.h" using namespace std; void root(float a,float b,float c,float &x1,float &x2) { float...
C++ Вычислить с заданной точностью значение функции
вот такая задачка..
C++ Ошибка в организации класса http://www.cyberforum.ru/cpp-beginners/thread648907.html
Мои первые попытки написать консольную версию пошагового боя обвенчались неудачей в самом начале. При тестовых ударах в цикле for увидел что очки жизней персонажа не уменьшаются, тк кк задумывалось....
C++ Описать функцию, которая формирует список Common В составе программы описать функцию, которая формирует список Common, включив в него элементы, которые входят одновременно в список М1 и М2. Помогите пожалуйста, ибо идей вообще нет, как это... подробнее

Показать сообщение отдельно
AnreyKazakov
Заблокирован
09.09.2012, 15:32  [ТС]
Ого, оказывается еще и <iterator> надо подключать...
Еще одна задача, так же с косяком в одном месте, надо сложить первый элемент вектора с последним, второй с предпоследним и т.д , косяк в одном месте, выделил комментарием, так наверно нельзя присваивать, но тогда как?
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 <string>
#include <vector>
#include <iterator>
int main(){
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;
    using std::vector;
    int val;
    vector<int> vec;
    while(cin>>val)vec.push_back(val);
    vector<int>::iterator iter2=vec.end();
    vector<int>::iterator iter;
    for(iter=vec.begin();iter<iter2;++iter){
        iter2=iter2-iter; /*вот здесь вот он ругается*/
        val=*iter+*iter2;
        cout<<"Sum of vec["<<std::distance(vec.begin(),iter)<<"] and vec["<<std::distance(vec.begin(),iter2)<<"] is "<<val<<endl;
        }
        if(iter==iter2) cout<<"vec["<<std::distance(vec.begin(),iter)<<"] no pair. Hi's value "<<*iter<<endl;
    return 0;
    }
Добавлено через 7 минут
Переписал вот так
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 <string>
#include <vector>
#include <iterator>
int main(){
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;
    using std::vector;
    int val;
    vector<int> vec;
    while(cin>>val)vec.push_back(val);
    vector<int>::iterator iter2=vec.end()-1;
    vector<int>::iterator iter;
    for(iter=vec.begin();iter<iter2;++iter){
        val=*iter+*iter2;
        cout<<"Sum of vec["<<std::distance(vec.begin(),iter+1)<<"] and vec["<<std::distance(vec.begin(),iter2+1)<<"] is "<<val<<endl;
        --iter2;
        }
        if(iter==iter2) cout<<"vec["<<std::distance(vec.begin(),iter+1)<<"] no pair. Hi's value "<<*iter<<endl;
    return 0;
    }
Но, хотелось бы узнать причину почему прошлый вариант не работал, почему нельзя из одного итератора вычитать другой? Нельзя получается, а хотя можно наверно через ту же функцию distance сделать....

Добавлено через 2 минуты
Чет с итераторами такая муть возиться, с индексами гораздо удобней ИХМО, но в книжке написано что без них никуда ...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru