PDA

View Full Version : [Q] Có ai giúp em không?



monkeyvu
06-01-2003, 08:29
Trong cuốn Algorithm in C++ phần 5 có đoạn mã sau mà em không hiểu


template <class Graph>
vector <Edge> edges(Graph & G)
{ int E=0;
vector <Edge> a(G.E( ));
for(int v=0;v<G.E( );v++)
{
typename Graph::adjIterator A(G,v);

for (int w=A.beg();!A.end( );w=A.nxt( ))
if (G.directed( )||v<w)
a[E++]=Edge(v,w);
}

return a;
}


Ở đây vector là cái gì,khi gõ đoạn mã này vô thì C++ nó không hiểu,nó đòi template phải có kiểu function hay class ,như vậy là sao?

tinystar
06-01-2003, 11:42
Ở đây vector là 1 template, tức là 1 mẫu có sẵn. Bạn nên tìm hiểu về template, trong MSDN có đó.
Template tức là 1 mẫu có sẵn, trong trường hợp này đáng lẽ bạn phải tự tạo ra 1 vector nhưng bạn không cần tạo vì nó đã có, nó là 1 container.
Chi tiết xem trong MSDN

monkeyvu
07-01-2003, 15:41
Mà container là dzì?Trong cuốn sách chỉ có đoạn mã đó thôi nó đâu có chỉ tạo vector nào đâu ,khi gõ đoạn mã này vào thì không biên dịch được ,Anh tinystar có thể nói rõ hơn không?

tinystar
07-01-2003, 15:54
Đoạn mã trên là để vẽ 1 hình gì đó và cần đến vector, do đó ta phải tạo ra 1 vector nhưng thay vào đó ta dùng 1 cái có sẵn (template). Template là 1 tập hợp các công cụ có sẵn (mình không biết định nghĩa sao nữa) mà developer thường dùng như : vector, array, .... các hãng tạo sẵn các mẫu này để tiện cho developer.

container là 1 thùng chứa (vector chứa các số) mà ta thường thấy như : vector, array, dictionary ...

monkeyvu
07-01-2003, 16:09
Cám ơn anh tinystar nhiều,mà anh có cuốn sách đó không để em nói cho dễ?Thực ra đây là doạn mã đầu tiên của cuốn sách đó ,nó đâu có tạo sẵn cho mình dzì đâu?

monkeyvu
07-01-2003, 16:19
Khi em đọc cuốn sách này thì đoạn mã đầu tiên của nó là viết class Graph sau đó là đoạn mã trên cho nên em không hiểu dzì hết ,anh tinystar có thể chỉ em không?

tinystar
10-01-2003, 20:34
Trong đoạn mã trên thì Graph sẽ là 1 template. Bạn nên tìm hiểu trên Turbo C++ 3.0 của Borland hoặc trong MSDN. trong khuôn khổ trên này mình không thể chỉ bạn cụ thể được.

tinystar
11-01-2003, 08:43
#include <stdio.h>
#include <conio.h>
//
//
template <class T>class List{
T *v;
int size;
public:
List(int);
T& operator[](int i) {return v[i];}
};
// Out-of-class definitions require a special syntax:
template <class T> List<T>::List(int n){
v = new T[n];
size = n;
}
//
class Myclass{
public : Myclass(){printf("My class constructor. \n"); };
};
//
void main(){
List<int> x(5);
List<Myclass> y(5);
Myclass m;
x[3] = 7;
y[3] = m; // m is type Myclass
}

Đây là 1 ví dụ đơn giản về template, ở đây List là 1 template, nó có thể chứa số nguyên ( biến x ), có thể chứa các đối tượng ( biến y ) ==> bạn thấy được sự tiện lợi của nó không ?

monkeyvu
12-01-2003, 06:49
Cám ơn anh tinystar nhiều ,em cũng hiểu sơ sơ gòi ,mà anh tên dzì dzậy ?<----Hông biết hỏi câu này có bị xóa bài hông ta?


lâu lâu cho mấy câu thăm hỏi nhau thì okie :D. Nhưng hạn chế nha.

tinystar
13-01-2003, 12:31
hi hi tên anh là tinystar chứ gì nữa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Rageon
14-01-2003, 04:54
Hieu thiet khong ddo' ?
Neu muon hieu the^m ve^` vector thi` vo^ trong yahoo, type : STL vector no' se~ co' nhieu ca'i tutorial chi? cho monkeyvu ddo'
muon xa`i vector thi` #include <vector>

ho.c gioi nhe :)

monkeyvu
15-01-2003, 12:35
Rageon là ai thằng cha nào vậy?Hỏi vậy là sao,định xỏ xiên hả?Mà dù sao cũng cám ơn nhiều :)

tinystar
15-01-2003, 16:36
hê hê, đừng khích nhau ở đây, coi chừng bị xoá bài.

Có gì cần hỏi thì cứ post lên sẽ có người trả lời.

Everything is possible !!!
Thân

Rageon
17-01-2003, 01:22
Làm gì nặng lời vậy anh bạn, nếu biết rồ thì thôi, coi như tui chưa nói qua :) học hỏi nhau thôi mà

To tinystar: anh có vẻ biêt nhiều về C++ huh, mai mốt RG thọ giáo

tinystar
17-01-2003, 14:31
to Rageon : no vấn đề, mong sẽ được học hỏi lẫn nhau.

tinystar
27-01-2003, 20:11
data base của diễn đàn có vấn đề thì phải (tui tra lời cuối cùng mà ngoài kia không phải tên tui)

TinyToon
01-02-2003, 09:21
Bài viết được gửi bởi tinystar
data base của diễn đàn có vấn đề thì phải (tui tra lời cuối cùng mà ngoài kia không phải tên tui)
Hi,
By the way, I came across your website and then downloaded the source code of some your programs. In the Dline(visual C++), you showed a very good programming skill, which I really admire.:D . However, in the chinese chess, I have the feeling that it is not yours due to the professional code.
Anyway, I beleive that you will become a software developer in the comming years. Hope to hear from you often. Bye.

tinystar
02-02-2003, 21:44
Nice to meet you and want to become to friend with each other. Your are right, in the china chess I had developed base on PHN, and change some thing such as interface, some thing in algorithm.
I want to write more but i have not enought time.
Thanks.
masterthts@yahoo.com