0 / 0 / 0
Регистрация: 04.05.2017
Сообщений: 60
|
|
1
|
Создать шаблонный класс "Вектор"
26.12.2017, 16:50. Показов 7564. Ответов 7
Нужно создать шаблон вектор,чтоб был похож на вектор из стл.И клас студент какой вектор.
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
| #include <iostream>
#include <iomanip>
#include <string>
template <class T>
class Vector
{
protected: //?
int size;
int cap;
T* data;
public:
Vector(int=1);
const int Size();
const int capacity();
T& operator [](int);
void push_back(T);
~Vector(void);
};
template <class T>
const int Vector<T>::Size()
{
return size;
}
template <class T>
const int Vector<T>::capacity()
{
return cap;
}
template <class T>
Vector<T>::Vector(int l)
{ int c;
if(l<=0)l=1;
size=l;
cap=1;
while(cap<size)cap=cap*2;
data = new T[cap];
}
template <class T>
void Vector<T>::push_back(T elem)
{
T* newdata;
if(size>cap) {
cap=cap*2;
newdata=new T[cap];
for (int i=0; i<size; i++)
newdata[i]=data[i];
delete[] data;
data=newdata;
}
data[size]=elem;
size++;
}
template <class T>
Vector<T>::~Vector(void)
{
delete [] data;
}
template <class T>
T& Vector<T>::operator[](int i)
{
return data[i];
}
class Student {
private:
string name;
string surname;
public:
Student(string name, string surname):name(name), surname(surname){};
Student(const Student& student) :name(student.name), surname(student.surname){};
Student& operator=(const Student& student) {
name = student.name;
surname = student.surname;
return *this;
}
int CompareName(const Student& student) const {
return name.compare(student.name);
}
int CompareSurname(const Student& student) const {
return surname.compare(student.surname);
}
friend ostream& operator<< (ostream& stream, const Student& student) {
stream << " Name:" << setw(10) << student.name;
stream << " Surname:" << setw(10) << student.surname << endl;
return stream;
}
};
void Init(Vector<Student>& students);
void Print(const Vector<Student>& students);
int main()
{
Vector<Student> students;
Init(students);
cout << "list: :" << endl;
Print(students);
return 0;
}
void Init(Vector<Student>& students) {
students.push_back(Student("Vasiliy", "C"));
students.push_back(Student("Oleg", "B"));
students.push_back(Student("Maxim", "L"));
students.push_back(Student("Dmitriy", "K"));
students.push_back(Student("Andrey", "Z"));
students.push_back(Student("Vladislav", "A"));
}
void Print(const Vector<Student>& students) {
for (const Student& student : students)
cout << student;
} |
|
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
| ||=== Build: Debug in laba4 (compiler: GNU GCC Compiler) ===|
C:\Users\lapsha\Documents\laba4\main.cpp|70|error: 'string' does not name a type|
C:\Users\lapsha\Documents\laba4\main.cpp|71|error: 'string' does not name a type|
C:\Users\lapsha\Documents\laba4\main.cpp|76|error: expected ')' before 'name'|
C:\Users\lapsha\Documents\laba4\main.cpp|93|error: 'ostream' does not name a type|
C:\Users\lapsha\Documents\laba4\main.cpp|77|error: class 'Student' does not have any field named 'name'|
C:\Users\lapsha\Documents\laba4\main.cpp|77|error: 'const class Student' has no member named 'name'|
C:\Users\lapsha\Documents\laba4\main.cpp|77|error: class 'Student' does not have any field named 'surname'|
C:\Users\lapsha\Documents\laba4\main.cpp|77|error: 'const class Student' has no member named 'surname'|
C:\Users\lapsha\Documents\laba4\main.cpp||In member function 'Student& Student::operator=(const Student&)':|
C:\Users\lapsha\Documents\laba4\main.cpp|80|error: 'name' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|80|error: 'const class Student' has no member named 'name'|
C:\Users\lapsha\Documents\laba4\main.cpp|81|error: 'surname' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|81|error: 'const class Student' has no member named 'surname'|
C:\Users\lapsha\Documents\laba4\main.cpp||In member function 'int Student::CompareName(const Student&) const':|
C:\Users\lapsha\Documents\laba4\main.cpp|86|error: 'name' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|86|error: 'const class Student' has no member named 'name'|
C:\Users\lapsha\Documents\laba4\main.cpp||In member function 'int Student::CompareSurname(const Student&) const':|
C:\Users\lapsha\Documents\laba4\main.cpp|90|error: 'surname' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|90|error: 'const class Student' has no member named 'surname'|
C:\Users\lapsha\Documents\laba4\main.cpp||In function 'int main()':|
C:\Users\lapsha\Documents\laba4\main.cpp|106|error: 'cout' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|106|note: suggested alternative:|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\iostream|61|note: 'std::cout'|
C:\Users\lapsha\Documents\laba4\main.cpp|106|error: 'endl' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|106|note: suggested alternative:|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\ostream|564|note: 'std::endl'|
C:\Users\lapsha\Documents\laba4\main.cpp||In function 'void Init(Vector<Student>&)':|
C:\Users\lapsha\Documents\laba4\main.cpp|111|error: no matching function for call to 'Student::Student(const char [8], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|111|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|112|error: no matching function for call to 'Student::Student(const char [5], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|112|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|113|error: no matching function for call to 'Student::Student(const char [6], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|113|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|114|error: no matching function for call to 'Student::Student(const char [8], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|114|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|115|error: no matching function for call to 'Student::Student(const char [7], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|115|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|116|error: no matching function for call to 'Student::Student(const char [10], const char [2])'|
C:\Users\lapsha\Documents\laba4\main.cpp|116|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 2 provided|
C:\Users\lapsha\Documents\laba4\main.cpp||In function 'void Print(const Vector<Student>&)':|
C:\Users\lapsha\Documents\laba4\main.cpp|120|error: 'begin' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|120|note: suggested alternative:|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\initializer_list|89|note: 'std::begin'|
C:\Users\lapsha\Documents\laba4\main.cpp|120|error: 'end' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|120|note: suggested alternative:|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\initializer_list|99|note: 'std::end'|
C:\Users\lapsha\Documents\laba4\main.cpp|121|error: 'cout' was not declared in this scope|
C:\Users\lapsha\Documents\laba4\main.cpp|121|note: suggested alternative:|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\iostream|61|note: 'std::cout'|
C:\Users\lapsha\Documents\laba4\main.cpp||In instantiation of 'Vector<T>::Vector(int) [with T = Student]':|
C:\Users\lapsha\Documents\laba4\main.cpp|103|required from here|
C:\Users\lapsha\Documents\laba4\main.cpp|36|error: no matching function for call to 'Student::Student()'|
C:\Users\lapsha\Documents\laba4\main.cpp|36|note: candidate is:|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: Student::Student(const Student&)|
C:\Users\lapsha\Documents\laba4\main.cpp|77|note: candidate expects 1 argument, 0 provided|
C:\Users\lapsha\Documents\laba4\main.cpp|31|warning: unused variable 'c' [-Wunused-variable]|
||=== Build failed: 28 error(s), 3 warning(s) (0 minute(s), 1 second(s)) ===| |
|
0
|