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

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

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

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

05.08.2012, 15:35. Просмотров 1057. Ответов 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++
почему когда выводим данные вектора пишем так: for (vector&lt;RecVecR&gt;::iterator p =vecR.begin() ; p != vecR.end();p++) а если надо...

Вывод всех элементов массива и их размер - C++
В пхп есть функция var_dump http://php.su/functions/?var_dump допустим есть массив a = 1 {1,2,3} 2 {4,5,6} эта функция...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Размер вектора - C++
Подскажите функцию для класса vector, которая будет возвращать размер памяти, который занимает вектор.

Размер вектора - C++
День добрый. У меня проблема. Нужно объявить вектор, заполнить его случайными числами в диапазоне от -50 до 50, вывести в listbox1....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
551 / 504 / 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
~ Эврика! ~
1243 / 992 / 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
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
05.08.2012, 16:03 #6
C++
1
2
// Вывод вектора в консоль
std::copy(v.begin(),v.end(),ostream_iterator<int>(std::cout,"\t"));
alsav22
5417 / 4813 / 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, правильный пример привёл заполнения вектора.
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);
* * }
Всем спасибо, понял свою ошибку, она глупая)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2012, 16:09
Привет! Вот еще темы с ответами:

Найти сколько элементов первого вектора совпадают с элементами второго вектора - C++
#include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;vector&gt; #include &lt;set&gt; using namespace std; void main() { ...

Получить размер вектора - C++
Привет всем. Столкнулся вот с такой проблемкой: Есть вектор: std :: vector&lt;Ball*&gt; balls; Он находится инициализируется в классе...

Размер двумерного вектора - C++
имею такое объявление vector&lt;vector&lt;int&gt;&gt; Mat; vector&lt;int&gt; Vec; инициализируем эту структуру, элементы в Mat хранятся так -...

Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) - C++
Ребята помогите пожалуйста с задачкой. Я сам не шарю в C++, но в этом семестре появился этот предмет! И завтра его надо будет сдать :( Буду...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.08.2012, 16:09
Ответ Создать тему
Опции темы

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