lab13

31 views
Skip to first unread message

tuann...@vnu.edu.vn

unread,
May 20, 2012, 11:32:07 PM5/20/12
to int2...@googlegroups.com
các bạn cho mình hỏi tí. trong lab13, phần phép cộng 2 biến kiểu StringClass.
giả sử
biến sc1 có length = 8, capacity = 10;
biến sc2 có length = 5, capacity = 11;
nếu sc = sc1 + sc2 thì sc có length = 13 còn capacity = 21 hay chỉ bằng 14 ?

Đỗ Văn Tú

unread,
May 20, 2012, 11:43:30 PM5/20/12
to int2202ap
cái này tùy từng người xử lý thôi.
nếu lười thì cộng 2 capacity lại, có ai cấm đâu.
nhưng với mình, mình thêm vài dòng xử lý nữa cho nó đẹp có tốn mấy
công đâu.
kết quả là 14 vẫn đẹp hơn chứ :))

Diep

unread,
May 21, 2012, 3:33:45 AM5/21/12
to int2202ap
length là biến để theo dõi độ dài xâu chứa trong data (nghĩa là đếm số
kí tự có nghĩa trong mảng data)
capacity là biến để theo dõi bộ nhớ động đã cấp phát cho data bởi lệnh
new (mới nhất)

Từ đó suy ra trong phép cộng của bạn Tuấn, kết quả phải có length là
13, capacity tùy lệnh cấp phát của bạn. Ví dụ:
StringClass tong; tong.data = new char[sc1.capacity + sc2.capacity];
thì tong.capacity = sc1.capacity + sc2.capacity = 23
StringClass tong; tong.data = new char[sc1.length + sc2.length + 1];
thì tong.capacity = sc1.length + sc2.length + 1 = 14


Reply all
Reply to author
Forward
0 new messages