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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BlackUser
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 69
#1

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

03.03.2014, 03:49. Просмотров 369. Ответов 1
Метки нет (Все метки)

Есть вектор, он передается в функцию так:
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 и код работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 03:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какой должен быть итератор для константной ссылки на вектор? (C++):

Какой должен быть синтаксис для использования вложенного шаблонного класса? - C++
Никак не могу найти, как это правильно написать? template &lt;class T&gt; class List { private: template &lt;T&gt; class Node { T...

Как определять какой метод должен быть статическим, а какой нет? - C++
Quer::add_line_to_vec: недопустимый вызов нестатической функции-члена

Как правильно должен быть написан метод возвращающий ссылку на вектор - C++
Доброе время форумчане! Ну собственно сама тема говорит Есть класс class SoftwareCore { private: public:

Какой тип должен быть у функции? - C++
Сделал ф-цию, которая считывает файла и записывает результат работы с данными в vector. решил проверить, что хранит векотор, сделал ф-цию...

Какой алгоритм должен быть у формулы? - C++
Здравствуйте! Пробую решать задачи по основам программирования и алгоритмизации по учебнику. На первой картинке задача, на второй моё...

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

1
Croessmah
Эксперт CЭксперт С++
13407 / 7557 / 853
Регистрация: 27.09.2012
Сообщений: 18,590
Записей в блоге: 3
Завершенные тесты: 1
03.03.2014, 05:38 #2
Цитата Сообщение от BlackUser Посмотреть сообщение
но если аргумент - ссылка,
в данном случае всё дело не в ссылке, а в константности
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 05:38
Привет! Вот еще темы с ответами:

В VC++ параметр const (_variant_t & data) непонятно какой должен быть - C++
Господа помогите кто чем может :-) ITablePtr pTable есть ф-я pTable-&gt;SetPrivateData(long dataTag,const _variant_t &amp; data) с первым...

В VC++ параметр const (_variant_t & data) непонятно какой должен быть - C++
Здарствуйте господа Я создаю репорт с помощью 'Report Designer Component' IApplicationPtr pApp; IReportPtr pRep; IReportPtr...

Возврат константной ссылки из функции - C++
Можно ли из функции возвращать константную ссылку? Есть след. классы: class A { /*чтото тяжёлое, сотни байт, например массив, или...

Изменение константной ссылки в обычную или указатель - C++
Добрый день, вопрос в названии темы. Как из константной ссылки получить обычную или указатель , чтго бы можно было изменять объект?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru