С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98

Ввод значения в вектор

14.11.2016, 21:34. Показов 739. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Написал собственную реализацию модели вектора. В связи с этим возник вопрос: как сделать возможность ввода i-того значения в вектор? Я так понял, что функцию cin надо передавать ссылку на объект, который вводишь. Но когда я в перегрузке [] возвращаемым значением делаю ссылку на возвращаемый объект - при вводе программа крашится. Как это исправить? Помогите, пожалуйста.
P.S. Может еще кому будет не лень посмотреть мой код и оставить своё экспертное мнение о нем?
Сам код:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <cstdlib>
using namespace std;
 
template <class T>
class tt_vector
{
private:
    T *vector;
    unsigned int size_vector;
    unsigned int tail;
    unsigned int modifier;
public:
    tt_vector();
    ~tt_vector();
    tt_vector(const tt_vector&);
    void pop_back();
    void reserve(unsigned int, unsigned int);
    void add(const T& obj);
    void reserve(unsigned int size_vector = 10);
    void clear();
    int get_modifier();
    void arr_cpy(T*, T*);
    int size(void);
    int capacity(void);
    void resize(void);
    void resize(unsigned int);
    void resize_to_tail(void);
    T operator= (const T&);
    T operator [] (unsigned int);
};
 
template <class T> tt_vector<T>::tt_vector()
{
    vector = NULL;
    size_vector = 0;
    tail = 0;
    modifier = 10;
}
template <class T> tt_vector<T>::tt_vector(const tt_vector&)
{
    vector = new T[size_vector = obj.capacity()];
    for (int i = 0; i < obj.size(); i++)
    {
        vector[i] = obj[i];
    }
    tail = obj.size();
    modifier = obj.modifier();
}
template <class T> tt_vector<T>::~tt_vector()
{
    delete[] vector;
}
template <class T> void tt_vector<T>::reserve(unsigned int size_vector = 10, unsigned int modifier = 10)
{
    vector = new T[this->size_vector = size_vector];
    this->modifier = modifier;
    tail = 0;
}
template <class T> void tt_vector<T>::reserve(unsigned int size_vector = 10)
{
    vector = new T[this->size_vector = size_vector];
    this->modifier = 10;
    tail = 0;
}
template <class T> void tt_vector<T>::clear()
{
    delete[] vector;
    reserve(10,10);
}
template <class T> void tt_vector<T>::pop_back()
{
    
    if (tail != 0)
        tail--;
}
template <class T> int tt_vector<T>::size()
{
    return tail;
}
template <class T> int tt_vector<T>::get_modifier()
{
    return modifier;
}
template <class T> int tt_vector<T>::capacity()
{
    return size_vector;
}
template <class T> void tt_vector<T>::resize(void)
{
    size_vector += modifier;
    vector = (T*)realloc(vector, size_vector*sizeof(T));
}
template <class T> T tt_vector<T>::operator= (const T& obj)
{
    if (this != &obj)
    {
        delete[] vector;
        vector = new T [size_vector = obj.capacity()];
        modifier = obj.get_modifier();
        for (unsigned i = 0; i < obj.size(); i++)
        {
            vector[i] = obj[i];
        }
    }
    return *this;
}
template <class T> T tt_vector<T>::operator[] (unsigned int ptr)
{
    if (ptr <= tail)
        return vector[ptr];
}
template <class T> void tt_vector<T>::resize_to_tail(void)
{
    if (tail != 0)
        vector = (int*)realloc(vector, (tail + 1)*sizeof(T));
}
template <class T> void tt_vector<T>::arr_cpy(T* begin, T* end)
{
    for (unsigned int i = 0; begin != end; begin++)
    {
        add(*begin);
    }
}
template <class T> void tt_vector<T>::add(const T& obj)
{
    if ((tail + 1) < size_vector)
    {
        
        vector[tail] = obj;
        tail++;
    }
    else
    {
        resize();
        add(obj);
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2016, 21:34
Ответы с готовыми решениями:

Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов
Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов ...

нужно построить вектор В, где В(i) - число элементов i-ой строки, значения которых меньше заданного значения.
помогите подалуйста сделать прогу! нужно построить вектор В, где В(i) - число элементов i-ой строки, значения которых меньше заданного...

Ввести размер прямоугольной матрицы и значения ее элементов. Построить вектор В, где В() - номер максимального значения в -ой строке
Ввести размер прямоугольной матрицы и значения ее элементов. Построить вектор В, где В(i) - номер максимального значения в i-ой строке.

1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.11.2016, 21:59
Ссылка должна быть. Ты или выходишь за границу vector или тип T не поддерживается cin.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2016, 21:59
Помогаю со студенческими работами здесь

Ввод из файла в вектор
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;ostream&gt; #include &lt;vector&gt; const int size=7; using...

Ввод чисел в вектор
Задание: Ввести в вектор значения расстояния, посчитать их сумму, определить наибольшее и наименьшее значения и среднее значение. Вот...

Ввод данных в вектор
Я хочу,чтобы пользователь вводил номер и он сразу записывался в вектор,а не записывать числа в массив и только потом заполнять вектор,но у...

Ввод данных в вектор
Небольшой оффтоп, а как сделать ввод строки (если строка это вектор) с помощью итераторов, то есть размер строки заранее не определен....

Ввод строчки в вектор по буквам
Привет,появилась такая проблема. Вводим строку через клавиатуру, состоящая из слов, набранных заглавными буквами разделенных...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru