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

Какой должен быть итератор для константной ссылки на вектор? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ OpenCV http://www.cyberforum.ru/cpp-beginners/thread1109667.html
привет. если не в тему - прошу перенести в правильный раздел. у меня вопрос по компьютерному зрению. У меня есть черно-белая фотография с градацией серого. возможно ли в opencv или в другой библиотеке, сделать так чтобы строилась карта высот, например полностью черный пиксель имел -5 а белый 0, или для этого нужно использовать что-то иное.
C++ Double перевести в string Задача, которую я решаю проверяется компилятором на сервере, а он не воспринимает некоторый "прогресс", и в моем случае функцию to_string(): string str; double number; cin >> number; str = to_string(number); Как реализовать стандартными средствами? http://www.cyberforum.ru/cpp-beginners/thread1109645.html
C++ Нужны примеры реализаций перегруженных функций
Скиньте мне примеры реализаций перегруженных функций написаные в фомах (Form) кому не жалко буду благодарен или хоть пример наведите как реализовать это все в формах.
Буквы в русском тексте C++
Ребят, помогите пожалуйста с программой. Нужно считать русский текст с файла и вывести частоту повтора каждой буквы в алфавите(33)
C++ Проверьте программу! http://www.cyberforum.ru/cpp-beginners/thread1109638.html
Необходимо перед и после каждого нечетного элемента вставить элементы со значением 0. Вроде работает правильно, но может что подскажете? void numb_1(TSNum *&Start){ TSNum *wp,*pp; wp=Start; pp=NULL; if(wp==NULL) return; if((wp->numb)%2!=0){ wp=wp->next; wp->numb=NULL;
C++ Убрать <string> из кода Помогите исправить, что бы в коде не использовалась библиотека <string> в справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отбытия и прибытия. Вывести информацию об рейсах которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.Пункт назначения и время вводятся с клавиатуры.... подробнее

Показать сообщение отдельно
BlackUser
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 69
03.03.2014, 03:49     Какой должен быть итератор для константной ссылки на вектор?
Есть вектор, он передается в функцию так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
using namespace std;
 
void func(vector<int> arg) {
    for(vector<int>::iterator it=arg.begin(); it!=arg.end(); ++it)
        cout << *it << ' ';
    cout << endl;
}
 
int main () {
    int myints[] = { 1,2,3,4 };
    vector<int> myvector( myints, myints + sizeof(myints)/sizeof(int) );
    func(myvector);
    return 0;
}
в таком случае с итератором все понятно, но если аргумент - ссылка, то какой должен быть итератор? например:
C++
1
2
3
4
5
void func(const vector<int> & arg) {
    for(auto it=arg.begin(); it!=arg.end(); ++it) // какой должен быть итератор без использования переменной auto из стандарта c++11 ?
        cout << *it << ' ';
    cout << endl;
}
p.s. из отладчика вытащил такую конструкцию:
C++
1
_Vector_const_iterator<_Vector_val<int,allocator<int> > >
то есть можно задать итератор так:
C++
1
2
3
4
5
void func(const vector<int> & arg) {
    for(_Vector_const_iterator<_Vector_val<int,allocator<int> > > it=arg.begin(); it!=arg.end(); ++it)
        cout << *it << ' ';
    cout << endl;
}
но что-то мне подсказывает, что так нехорошо делать и вообще можно как-то проще?

аналогичная проблема для составления итератора для двумерного вектора, то есть для:
C++
1
const vector<vector<int>> & arg2
какой итератор для arg2.begin() ???

Добавлено через 5 минут
нашел решение, оказалось, что все совсем просто, вот может кому пригодится для константных итераторов:
C++
1
2
3
4
5
void func(const vector<int> & arg) {
    for(vector<int>::const_iterator it=arg.begin(); it!=arg.end(); ++it)
        cout << *it << ' ';
    cout << endl;
}
всего навсего меняется iterator на const_iterator и код работает.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru