BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++ Tìm hiểu về mẫu hàm (function template), mẫu lớp (class template)

20 869 1
BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++ Tìm hiểu về mẫu hàm (function template), mẫu lớp (class template)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++ Đề tài 6: Tìm hiểu mẫu hàm (function template), mẫu lớp (class template): Ý nghĩa cú pháp cài đặt Trình bày sơ lược thư viện STL Cách sử dụng lớp string chuẩn hàm thành viên lớp Viết chương trình cài đặt lớp đối tượng ngăn xếp cho tạo đối tượng ngăn xếp chứa kiểu liệu khác nhau, thực thao tác đưa phần tử vào ngăn xếp (push), lấy phần tử khỏi ngăn xếp (pop), lấy giá trị phần tử đỉnh ngăn xếp không lấy phần tử khỏi ngăn xếp (top), kiểm tra ngăn xếp có rỗng khơng (empty) Nhập vào câu văn (sử dụng lớp string chuẩn), tách từ theo thứ tự từ trái qua phải đẩy vào ngăn xếp, lấy từ ngăn xếp đưa hình GV: Ngơ Cơng Thắng Nhóm SV thực (nhóm VIII): Vũ Thị Thùy Linh Trịnh Thúy Ngân Nguyễn Hoài Thu Nguyễn Thị Tuyến MỤC LỤC A.LÝ THUYẾT I Tìm hiểu mẫu hàm(function template), mẫu lớp(class template) Khuôn mẫu Mẫu hàm (function template) 2.1 Ý nghĩa 2.2.Khả áp dụng khuôn mẫu hàm 2.3 Nạp chồng khuôn mẫu hàm 2.4 Tham số khuôn mẫu hàm Mẫu lớp(class template) 3.1 Ý nghĩa 3.2 Cú pháp cài đặt 3.3 Sử dụng mẫu lớp 3.4 Tham số mẫu lớp II.SƠ LƯỢC VỀ THƯ VIỆN STL ( STANDARD TEMPLATE LIBRARY) Một Containers Các giải thuật(algorithms) Các iterators III Cách sử dụng lớp string chuẩn hàm thành viên lớp Cách sử dụng lớp string chuẩn 1.1 Khái niệm 1.2 Khai báo biến 1.3 Khởi tạo biến xâu 1.4 Vào Các hàm thành viên lớp string chuẩn 2.1 Hàm Copy( ) 2.2 Hàm insert ( ) 2.3 Hàm erase( ) 2.4 Hàm replace( ) 2.5 Hàm find( ) 2.6 Hàm find_first_of ( ) 2.7 Hàm substr ( ) 2.8 Hàm compare ( ) 2.9 Hàm c_str () 2.10 Hàm strcat () 2.11 Hàm strlen() 2.12 Hàm strcpy () 2.13 Hàm strchr () 2.14 Hàm strstr() 2.15 Hàm strcmp() 2.16 Hàm length() B CHƯƠNG TRÌNH TÀI LIỆU THAM KHẢO LỜI MỞ ĐẦU Ngôn ngữ C coi ngôn ngữ vạn sử dụng rộng rãi để giải toán khoa học kỹ thuật Ngôn ngữ C công cụ mạnh cho phép xây dựng chương trình hệ thống hệ điều hành UNIX, cơng cụ tiện ích khác Trên sở ngôn ngữ C người ta tiến hành xây dựng phiên hướng đối tượng gọi C++ nhằm thừa kế điểm mạnh vốn có C kết hợp với ưu điểm lập trình hướng đối tượng Bởi C++ ngày phổ biến Việc học nghiên cứu C++ cần thiết sinh viên tin học phần mềm Khơng nằm ngồi xu đó, sinh viên tin học trường ĐH Nông Nghiệp Hà Nội tiếp xúc với môn học Tuy nhiên lượng thời gian hạn hẹp nên khơng thể tìm hiểu sâu vấn đề lớp học Dưới nhóm chúng em xin trình bày nội dung đề tài :”Tìm hiểu mẫu hàm (function template), mẫu lớp (class template): Ý nghĩa cú pháp cài đặt Trình bày sơ lược thư viện STL Cách sử dụng lớp string chuẩn hàm thành viên lớp Viết chương trình cài đặt lớp đối tượng ngăn xếp cho tạo đối tượng ngăn xếp chứa kiểu liệu khác nhau, thực thao tác đưa phần tử vào ngăn xếp (push), lấy phần tử khỏi ngăn xếp (pop), lấy giá trị phần tử đỉnh ngăn xếp không lấy phần tử khỏi ngăn xếp (top), kiểm tra ngăn xếp có rỗng khơng (empty) Nhập vào câu văn (sử dụng lớp string chuẩn), tách từ theo thứ tự từ trái qua phải đẩy vào ngăn xếp, lấy từ ngăn xếp đưa hình” Trong đó: Tìm hiểu khn mẫu hàm(Thu) Tìm hiểu khn mẫu lớp(Linh) Tìm hiểu thư viện STL(Ngân) Tìm hiểu lớp string chuẩn hàm thành viên(Tuyến) Tìm hiểu chương trình (Cả nhóm) Do hiểu biết cịn hạn chế, nhóm chúng em khơng tránh khỏi sai sót, mong thày giáo bạn góp ý Nhóm chúng em xin chân thành cảm ơn NỘI DUNG A.LÝ THUYẾT I.Tìm hiểu mẫu hàm(function template), mẫu lớp(class template) Khuôn mẫu - Định nghĩa: Khuôn mẫu (Template) chế thay mã cho phép tạo cấu trúc mà rõ kiểu liệu - Từ khóa template theo sau cặp ngoặc nhọn chứa tên kiểu liệu tùy ý cung cấp Template - Chú ý: Một lệnh template có hiệu khai báo sau - Hai loại khuôn mẫu bản: +Mẫu hàm(function template): cho phép sử dụng tên để thực công việc khác +Mẫu lớp(class template): Cho phép ta cần viết định nghĩa khn hình lớp lần sau áp dụng chúng với kiểu liệu khác để lớp thể khác Mẫu hàm (function template) 2.1 Ý nghĩa -Mẫu hàm dạng khuôn mẫu đơn giản cho phép ta định nghĩa hàm dùng đến kiểu liệu tùy ý -Như ta biết, định nghĩa chồng hàm cho phép sử dụng tên cho nhiều hàm thực công việc khác Khái niệm mãu hàm cho phép sử dụng tên để thực công việc khác nhau, nhiên so với định nghĩa chồng hàm, có phần mạnh chặt chẽ hơn; mạnh cần viết định nghĩa mẫu hàm lần, sau chương trình biên dịch làm cho thích ứng với ca kiểu liệu khác nhau; chặt chẽ dựa theo khn hình hàm, tất hàm thể sinh trình biên dịch tương ứng với định nghĩa có giải thuật - Giả thiết cần viết hàm max đưa giá trị lớn hai gái trị có kiểu Ta viết định nghĩa kiểu int sau: Int max(int a,int b) { If (a>b) return a; Else return b; } Giả sử phải viết lại định nghĩa hàm max() cho kiểu double, float, char, char*… float max(float a,float b) { If (a>b) return a; Else return b; } Nếu tiếp tục vậy, có khuynh hướng phải viết nhiều định nghĩa hàm tương tự nhau; có kiểu liệu tham số thay đổi Giải pháp tạo mãu hàm nhât: #include Template T max(T a,T b) { If (a>b) return a ; Else return b ; } So sánh với hàm thơng thường ta thấy có dịng bị thay đổi : Template T max (T a, T b) Trong : Template xác định khn hình với tham số kiểu T ; Phần lại : T max (T a, T b) -> max() slà hàm với hai tham số hình thức kiểu T có giá trị trẻ kiểu T => Ưu điểm mẫu hàm : -Tiết kiệm mã nguồn-> dễ bao quát, dễ kiểm soát lỗi, nâng cao hiệu lập trình -Đảm bịa tính chặt chẽ kiểm tra kiểu mạnh trơng ngơn ngữ lập trình - Tính mở, nâng cao giá trị sử dụng lại phần mềm : thuật tốn viết lần sử dụng nhiều lần -Đảm bảo hiệu suất tương đương viết tách thành hàm riêng biệt -Cho phép xây dựng thư viện chuẩn mạnh (các thuật tốn thơng dụng chép, tìm kiếm, xếp, lựa chọn…) 2.2.Khả áp dụng khuôn mẫu hàm Khả áp dụng khuôn mẫu hàm vô tận,nhưng áp dụng cho tất đối số khuôn mẫu Ví Dụ : Điều kiện ràng buộc kiểu liệu áp dụng khn mấu hàm max phải có phép so sánh lớn hơn(>) : template inline T max(T a,T b) { return (a.b) ? a :b ;} ->Đối với kiểu liệu mới,muốn áp dụng cần phải nạp chồng toán tử so sánh > Tuy nhiên,khả áp dụng chưa có ý nghĩa Ví Dụ : Xác định chuỗi ký tự đứng sau hai chuỗi cho trước theo vần ABC char city1[ ] = « Ha Nôi«, city2[ ] = » Hai Phong»; char* city = max(city1,city2); //??? //max(char*,char*) 2.3 Nạp chồng khuôn mẫu hàm Một mẫu hàm nạp chồng hàm tên… char* max(char* a,char* b) {if (strcmp(a,b)) } void f() { char c = max(‘H’,’K’); max(char,char) char city1[ ] = « Ha Noi« , city2[ ] = « Hai Phong« ; char* city = max(city1,city2) ; //max(char*,char*) …} …hoặc mẫu hàm tên (khác số lượng tham số kiểu tham số) ví dụ: template T max(T a,T b,T c) { } template T max(T* a,int n) { } không : template X max(X a,X b) {…} 2.5 Tham số khuôn mẫu hàm Tham số khn mẫu hàm kiêu kiểu dấn xuất,nhưng biến số: template max(T a,T b) { } // OK template max(int* a) { } // error Một khuôn mẫu hàm có tham số kiểu : Template void swap(A& a, B& b) { A t = a; a = b; b = t; } Void f() { double a = 2.0 ; int b = ; swap(a,b) ; swap(b,a) ; } Thơng thường tham số khn mẫu xuất lần kiểu kiểu dẫn xuất trực tiếp tham biến: template void f1(X a, int b) {…} template void f2(X* b) {…} template void f3(Y& a, X b) {…} Mẫu lớp(class template) 3.1 Ý nghĩa -Bình thường để tạo lớp point ta định nghĩa: Class point { Int x, y; public: point (int a=0, int b=0 ); Void display(); //………… }; Ở ta định nghĩa lớp điểm có tọa độ nguyên Nếu muốn tọa độ điểm có kiểu khác (float, double, long ) ta phải định nghĩa lớp khác cách thay thế, định nghĩa lớp point từ khóa int từ khóa tương ứng vớ kiểu liệu mong muốn Để tránh trùng lặp chương trình, chương trình dịch C++ cho phép định nghĩa khn hình lớp sau áp dụng khn hình lớp với kiểu liệu khác để thu lớp thể mong muốn => Ưu điểm mẫu lớp: -Cho phép xây dựng lớp tổng qt Trình biên dịch sinh nhiều lớp khác dựa khuôn mẫu Chúng ta khơng cần viết lại lớp VD: Nếu có template cho lớp List, trình biên dịch giúp tạo hai lớp List List cách nhanh chóng 3.2 Cú pháp cài đặt a Khai báo -Khai báo mẫu lớp tương tự với mẫu hàm template b Cách xây dựng khn hình -Người ta phân biệt hai trường hợp + Khi hàm thành phần định nghĩa bên định nghĩa lớp: template class point { T x; T y; public: point (T a=0 ; T b=0) { x=a ; y=b ; } … } + Khi hàm thành phần định nghĩa bên ngồi định nghĩa lớp, lúc cần phải nhắc nhác lại : template trước định nghĩa hàm, tên mẫu hàm viết point VD: dòng tiêu đề đầy đủ cho hàm thành phần display() khn hình hàm point sau: template void point::display 3.3 Sử dụng mẫu lớp -Khi mẫu lớp định nghĩa, ta khai báo: Name_templateclass tendoituong ; VD : point a ; ->khai báo đối tượng a có hai thành phần tọa độ kiểu ngun Lúc point có vai trị kiểu liệu lớp -Trong trường hợp cần phải truyền tham số cho hàm thiết lập, ta làm bình thường : point a(3,5) =>Tổng kết : Mẫu lớp chưa phải lớp Chỉ chung ta cung cấp tham số kiểu cho lớp template có thể lớp template ; có lớp đối xử lớp thông thường 3.4 Tham số mẫu lớp (class template) - Một mẫu lớp có số lượng tham số tùy ý -Các tham số chia thành hai nhóm: +Tham số kiểu: mở đầu từ khóa class, nhận kiểu +Tham số giá trị trông giống tham số hàm bị hạn chế nhận kiểu liệu dấu phảy động (float, double… ) Tham số giá trị nhận giá trị ngầm định II.SƠ LƯỢC VỀ THƯ VIỆN STL ( STANDARD TEMPLATE LIBRARY) -STL thư viện template cho C++ phát triển vào năm 1992 với mong muốn có nhũng cấu trúc liệu, giải thuật tổng quát không làm tính hiệu Thư viện đưa vào danh sách thư viện chuẩn C++ theo tiêu chuẩn ANSI/ISO với tên gọi Standard Template Library (STL) -STL nhiều hang tổ chức, hang phần mềm mở rộng phát triển; đáng kể phải kể đến phiên SGI-STL Silicon Graphics STL Port ( tích hợp Borland C++ Builder 6) -Đặc điểm thư viện STL là: hỗ trợ trình biên dịch hai mơi trường WINDOWS lẫn UNIX Vì nên sử dụng thư viện xử lý thuận tiện cho việc chia sẻ mã nguồn với cộng đồng phát triển -STL chứa vài loại thực thể, có ba loại quan trọng là: + Containers + Algorithms + Iterators Một Containers là: cách lưu trữ liệu tổ chức nhớ Ví dụ ngăn xếp (Stack) danh sách liên kết (Linked list) Một loại côngtenơ khác, mảng, thông dụng đưa vào C++ (cũng hầu hết ngơn ngữ lập trình khác).Các Containers STL chia làm loại: +Containers tuần tự, Containers liên kết STL cịn có nhiều loại Containers khác mà hữu ích Các Containers STL cài đặt lớp mẫu để chúng lưu trữ với nhiều loại liệu khác 1.1 Côngtenơ (Containers) tuần tự: -Một côngtenơ (sequencial container) lưu trữ tập hợp phần tử mà hình dung đưòng thẳng, nhà mặt phố Mỗi phần tử liên kết với phần tử khác vị trí theo đưịng thẳng Mỗi phần tử xác định đứng trước đứng sau mảng C++ ví dụ cơngtenơ 1.2Cơngtenơ (Containers) liên kết: -Một côngtenơ liên kết côngtenơ khơng tuần tự, thay vào sử dụng khố để truy nhập liệu Các khố, điển hình số chuỗi, sử dụng tự động côngtenơ để xếp phần tử để lưu trữ theo trật tự định Nó giống từ điển tiếng Anh mà truy nhập liệu chách tra từ xếp theo thứ tự alphabe -Có hai loại cơngtenơ liên kết STL: +Ánh xạ (map) +Tập hợp (set) Một ánh xạ liên kết khoá ( từ mà muốn tra) với giá trị (ví dụ định nghĩa từ).Giá trị loại đối tượng Một tập hợp (set) tương tự ánh xạ (map) lưu trữ khố, khơng có giá trị liên kết Nó giống danh sách từ không định nghĩa *Chú ý: Không cần xác định kích thước cho cơngtennơ Các cơngtenơ tự chúng quan tâm tới tất cảc việc cấp phát nhớ Các giải thuật(algorithms) là: thủ tục gắn với containers để xử lý liệu chúng theo nhiều cách khác Ví dụ, có giải thuật xếp, chép, tìm kiếm trộn liệu Trong STL, giải thuật biểu diễn hàm mẫu (template function) - Các hàm hàm thành viên lớp containers(containers classes).Chúng hàm đứng Trên thực tế, đặc điểm bật STL giải thuật chung Chúng khơng nối với containers mà cịn sử dụng với mảng C++ thông thường containers người sử dụng tạo Các iterators dạng khái quát hóa khái niệm trỏ Chúng trỏ tới phần tử containers Chúng ta tăng iterators tăng trỏ để trỏ tới phần tử containers - Các iterators phần chủ yếu STL chúng nối giải thuật với containers Có thể coi chúng phiên phần mền dây cáp, giống dây cáp nối máy tính với thiết bị ngoại vi Các iterator nối thành phần khác với III Cách sử dụng lớp string chuẩn hàm thành viên lớp Cách sử dụng lớp string chuẩn 1.1 Khái niệm -Là dãy ký tự có kí tự cuối kí tự rỗng Ký tự rỗng có trị số viết ‘\0’ -Được C++ lưu trữ mảng kí tự, cho phép truy nhập vào ký tự xâu truy nhập vào phần tử mảng Tuy nhiên số trường hợp C++ xem xâu ký tự kiểu liệu Ví dụ, nhập vào đưa biến xâu lệnh cout cin 1.2 Khai báo biến - Cú pháp khai báo biến: Char ten_bien_xau[max+1] ; Trong max cho dạng biểu thức Biến xâu chứa xâu ký tự có độ dài khác 1.3 Khởi tạo biến xâu -Khởi tạo biến mảng : char str[6]={‘d’,’h’,’n’,’n’,’1’,’\0’} ; -Khởi tạo xâu : char str[6] = « dhnn1« ; +Hằng xâu dãy ký tự đặt hai dấu ngoặc kép Khi viết xâu ta khơng viết ký tự trình biên dịch thêm vào Hằng xâu rỗng xâu khơng có ký tự « « ; Khi khởi tạo cho biến xâu xâu số ký tự cực đại biến xâu phải lớn số ký tự xâu 1, trình biên dịch đưa thêm vào biến xâu kí tự rỗng Khi khởi tạo biến xâu ta khơng cần xác định số ký tự cực đại, trình biên dịch xác địn số ký tự cực đại số ký tự xâu +1 1.4 Vào - Có thể dùng lệnh cout cin VD : char str[11] ; cin>>str ; cout a; cin.igore; cin.get(str,11); Các hàm thành viên lớp string chuẩn -C++ có thư việc hàm làm việc với xâu ký tự string.lib Muốn sử dụng hàm ta phải khai báo sử dụng: #include 2.1 Hàm Copy( ) - Cú pháp : copy (ptr ,n,pos) Tức copy n kí tự từ đối tượng nó, vị trí pos tới chuỗi char*ptr - Chức năng: hàm copy cho phép copy đối tượng string sang chuỗi char* 2.2 Hàm insert ( ) -Cú pháp: insert (pos,ptr) Tức là: chèn chuỗi char*ptr vào đối tượng nó, bắt đầu vị trí pos -Chức : chèn thêm kí tự hay chuỗi vào vị trí chuỗi str cho trước Có nhiều cách dùng phương thức này: +str.insert (int pos,char*s) :chèn s (mảng kí tự kết thúc ‘/0’) vào vị trí pos str; +str.insert (int pos, string s) :chèn chuỗi s (kiểu string) vào vị trí pos str; +str.insert (int pos, int n, int ch) : chèn n lần kí tự ch vào vị trí pos str; 2.3 Hàm erase( ) -Cú pháp: erase(int pos,int n) -Chức : xóa n kí tự khỏi đối tượng nó, bắt đầu vị trí pos Nếu khơng qui định giá trị n tất kí tự str kể từ vị trí pos trở bị xóa 2.4 Hàm replace( ) -Cú pháp: replace(pos,nptr) -Chức : xóa n kí tự khỏi đối tượng nó, bắt đầu vị trí pos thay chúng chuỗi char*ptr 2.5 Hàm find( ) -Cú pháp: find (ptr,pos) Tức : tìm kiếm mẫu, tạo từ chuỗi char*ptr, đối tượng nó, vị trí pos trả vị trí kí tự tìm -Chức năng: tìm kiếm xem kí tự hay chuỗi có xuất chuỗi str cho trước hay không Có nhiều cách dùng phương thức là: +str.find (int ch, int pos = 0): tìm kí tự ch kể từ vị trí pos đến cuối chuỗi str +str.find (char*s, pos = 0) :tìm s (mảng kí tự kết thúc ‘/0’) kể từ vị trí pos đến cuối chuỗi +str.find (string& s, pos = 0): tìm chuỗi s kể từ vị trí pos đến cuối chuỗi * Lưu ý: khơng qui định giá trị pos hiểu 0, tìm thấy phương thức trả vị trí xuất đầu tiên, ngược lại trả giá trị -1 2.6 Hàm find_first_of ( ) -Cú pháp: find_first_of (ptr,pos) -Chức : hữu ích muốn tìm kiếm kí tự đối tượng string khơng chắn muốn tìm kí tự nào, nghĩa tìm kiếm kí tự số kí tự 2.7 Hàm substr ( ) -Cú pháp : substr (pos, n) -Chức : trích chuỗi chuỗi cho trước Ví dụ: str.substr (2,4) : trả chuỗi gồm kí tự chuỗi str kể từ kí tự vị trí thứ (chú ý kí tự chuỗi vị trí 0) 2.8 Hàm compare ( ) -Cú pháp : compare (str,pos,n) -Chức năng: so sánh dãy n kí tự đối tượng vị trí pos, với đối tượng string đối số Giá trị trả cho biết hai đối tượng string xếp theo thứ tự alphabe +Nếu giá trị trả 0: chuỗi đứng trước str theo thứ tự alphabe 2.9 Hàm c_str () -Cú pháp: const char*c_str( ) const; -Chức năng: chuyển đối tượng string sang chuỗi char* , nghĩa trả trỏ , trỏ tới mảng char chứa kí tự từ đối tượng string, cộng với kí tự kết thúc ‘\0’ trỏ trả từ c_str () const ,bởi thay đổi mảng char 2.10 Hàm strcat () -Cú pháp : strcat (chuỗi 1,chuỗi 2) -Chức năng: hàm copy xâu chuỗi vào đuôi xâu chuỗi * Lưu ý : không viết str1 =str1 + str2 2.11 Hàm strlen() -Cú pháp: int strlen(const char*s) -Chức năng: hàm xác định độ dài chuỗi nhập từ bàn phím 2.12 Hàm strcpy () -Cú pháp : strcpy(string1,string2) -Chức : hàm copy xâu string2 lên xâu string1, string2 mảng , trỏ hay xâu kí tự 2.13 Hàm strchr () -Cú pháp: char*strchr(const char*str,int c) -Chức năng: để trích chuỗi chuỗi kí tự kí tự định chuỗi hết chuỗi * Ghi chú: +Nếu kí tự định khơng có chuỗi kết trả NULL +Nếu kết trả hàm trỏ, trỏ chuỗi str đến kí tự c tìm thấy 2.14 Hàm strstr() -Cú pháp: strstr(string1, string2) -Chức : tìm kiếm xâu kí tự string2 string1 Kết trả lại trỏ, trỏ tới vị trí xâu kí tự str2 str1 pFound=strstr(str1,str2); Kết trả lại kiểu trỏ Nếu khơng tìm thấy, có giá trị NULL, NULL trỏ định nghĩa trước , tương đương với giá trị cho trỏ 2.15 Hàm strcmp() -Cú pháp: strcmp(str1,str2) -Chức năng: so sánh hai xâu kí tự, kí tự hai xâu so sánh cặp từ trái qua phải theo giá trị bảng mã ASCII *Lưu ý: +Nếu hai xâu có độ dài khác song số kí tự giống đến độ dài xâu ngắn xâu có độ dài ngắn coi bé “FILENAME” < “FILENAME A” ; cho giá trị TRUE “FINENAME” < “FILENAME” ; cho giá trị FALSE +Hai xâu kí tự nội dung lẫn độ dài chúng giống “FILENAME” = = “FILENAME”; cho giá trị TRUE +Hai chuỗi str1 str2 so sánh với , kết trả số nguyên Nếu kết số âm chuỗi str1 < str2 Nếu kết hai chuỗi str1 str2 Nếu kết số dương chuỗi str1 > str2 2.16 Hàm length() -Cú pháp: #include size_type length() const; -Chức năng: trả chiều dài chuỗi B CHƯƠNG TRÌNH #include #include #include //tao lop doi tuong ngan xep chua kieu du lieu khac template< class T, int m > //khai bao lop stack class Stack { private: T a[m]; int t; public: Stack(); ~Stack(); void push(T); T pop(); T top(); int empty(); int full(); }; // ============CHUONG TRINH CHINH================ int main() { string str; cout

Ngày đăng: 14/04/2015, 09:00

Từ khóa liên quan

Mục lục

  • BÁO CÁO BÀI TẬP LỚN

    • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++

      • GV: Ngô Công Thắng

      • MỤC LỤC

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan