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

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

Войти
Регистрация
Восстановить пароль
 
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
#1

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

05.08.2012, 15:35. Просмотров 941. Ответов 7
Метки нет (Все метки)

Объясните почему в функции 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2012, 15:35     Размер вектора и вывод элементов
Посмотрите здесь:

Вывод всех элементов массива и их размер C++
C++ Размер двумерного вектора
C++ Размер вектора
C++ Вывод элементов вектора
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А C++
C++ Размер вектора
Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
1240 / 989 / 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
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,908
Записей в блоге: 17
05.08.2012, 16:03     Размер вектора и вывод элементов #6
C++
1
2
// Вывод вектора в консоль
std::copy(v.begin(),v.end(),ostream_iterator<int>(std::cout,"\t"));
alsav22
5410 / 4806 / 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     Размер вектора и вывод элементов
Еще ссылки по теме:

Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора C++
Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) C++
Изменить размер трехмерного вектора C++
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     Размер вектора и вывод элементов
Ответ Создать тему
Опции темы

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