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

Размер вектора и вывод элементов - C++

Восстановить пароль Регистрация
 
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
05.08.2012, 15:35     Размер вектора и вывод элементов #1
Объясните почему в функции print размер передаваемого вектора v.size()=0? Соответсвенно не работает цикл for в print().
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
#include <iostream>
#include <vector>
using namespace std;
 
void print(vector<int> v, string s)
{
    cout << s << '\n';
    cout << v.size() << '\n';
    for ( int i = 0; i < v.size(); i++)
    {
        cout << v[i] << '\n';
    }
}
 
int main()
{
    vector<int> v;
    string s = "Вывод вектора:";
    
    for ( int i = 0; i < v.size(); i++)
    {
        v.push_back(i);
    }
    print(v, s);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.08.2012, 15:37     Размер вектора и вывод элементов #2
C++
1
2
3
4
5
6
7
    vector<int> v;
    string s = "Вывод ветора:";
    
    for ( int i = 0; i < v.size(); i++)
    {
        v.push_back(i);
    }
Ну потому что у пустого вектора размер 0. Следовательно цикл не исполнится => вектор останется пустым.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.08.2012, 15:47     Размер вектора и вывод элементов #3
замени
C++
1
for ( int i = 0; i < v.size(); i++)
на
C++
1
for ( int i = 0; i < 3; i++)
, напирмер.
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
05.08.2012, 15:52  [ТС]     Размер вектора и вывод элементов #4
Цитата Сообщение от ForEveR Посмотреть сообщение
Ну потому что у пустого вектора размер 0. Следовательно цикл не исполнится => вектор останется пустым.
Как функции правильно передать вектор?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
05.08.2012, 16:02     Размер вектора и вывод элементов #5
Вот так.
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
#include <iostream>
#include <vector>
using namespace std;
 
void print(const vector<int> &v, string s)
{
    cout << s << '\n';
    cout << v.size() << '\n';
    for ( int i = 0; i < v.size(); i++)
    {
        cout << v[i] << '\n';
    }
}
 
int main()
{
    vector<int> v;
    string s = "Вывод вектора:";
    
    for ( int i = 1; i <= 10; i++)
    {
        v.push_back(i);
    }
    print(v, s);
    return 0;
}
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,594
Записей в блоге: 17
05.08.2012, 16:03     Размер вектора и вывод элементов #6
C++
1
2
// Вывод вектора в консоль
std::copy(v.begin(),v.end(),ostream_iterator<int>(std::cout,"\t"));
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.08.2012, 16:06     Размер вектора и вывод элементов #7
Передаёте правильно, только он у вас пустой. vector<int> v; - создание пустого вектора. v.size() равно для него 0. Этот 0 вы используете в цикле for (int i = 0; i < v.size(); i++), как условие выполнения цикла. Первая проверка условия: 0 < 0. Условие не выполняется, выход из цикла. Вектор остался пустым. Вы его передаёте в функцию, там история с for повторяется. novi4ok, правильный пример привёл заполнения вектора.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2012, 16:09     Размер вектора и вывод элементов
Еще ссылки по теме:

Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) C++
Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора C++

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

Или воспользуйтесь поиском по форуму:
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
05.08.2012, 16:09  [ТС]     Размер вектора и вывод элементов #8
Цитата Сообщение от nsashans Посмотреть сообщение
for ( int i = 0; i < v.size()//// ВОТ ТУТ Я И ОШИБСЯ; i++)
* * {
* * * * v.push_back(i);
* * }
Всем спасибо, понял свою ошибку, она глупая)))
Yandex
Объявления
05.08.2012, 16:09     Размер вектора и вывод элементов
Ответ Создать тему
Опции темы

Текущее время: 15:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru