








Preview text:
lOMoAR cPSD| 58833082
1. FThư viện chuẩn #include
2.string ltrim(const string &); loại bỏ khoảng trắng
3.string rtrim(const string &); loại bỏ khoảng trắng
4.int n = stoi(): chuyển xâu thành số integer
5.sai cout >> sửa cout << 6.\n
7.Vector: mảng động, vector tên
push_back(): đẩy phần tử vào
tên.size(): kích thước mảng
v.back(): phần tử cuối cùng
Int x:v \\\ trích xuất các phần tử
8.interator: con trỏ thông minh tên.begin() phần từ đầu tiên
tên.end() phần tử sau phần tử cuối cùng :: toán tử phạm vi
vector::interator tên = /// chỉ vào địa chỉ
auto tên = /// chỉ vào địa chỉ
9.erase: xóa phần(đầu , cuối) 10.
remvoe(chuyển không hợp lệ xuốn cuối) 11. “῀” tham chiếu 12.
Stringstream(): tách từng cụm cách bởi khoảng trắng 13.
Tuple: mảng chứa nhiểu kiểu dữ liệu, không thay đổi được
get()tên: gọi tuple_cat: nối make_tuple: tạo
tie(): truyền giá trị cho biến từ tuple; 14.
Kiểu dữ liệu map map < key, value> m.insert(make_pair());
truy cập giá trị map[key] hoặc con trỏ đôi lúc phải dùng find 15.
Set: mảng chỉ chứa phần tử khác nhau set.count(value)đếm
xem giá trị xuất hiện bao lần find(value, start): kiểm
tra giá trị, interator trả về end hoặc vị trí
find_if(start,end, điều kiện)>>>>>>
.base(): chuyển con trỏ +1 thêm: insert
s.erase(value): xóa value hoặc interator s.begin():giá trị [0 s.rbegin(): giá trị[end]
thứ tự từ bé đến lớn 16.
Cin.igorn(): xóa khoảng trắng 17.
Multiset tên : khác set ở chỗ có giá trị giống nhau
và được xếp từ nhỏ đến lớn lOMoAR cPSD| 58833082 18.
Substr(): tách chuỗi từ xâu 19.
Strchr(): tạo một con trỏ chỉ tới kí tự đầu tiên cần tìm trong xâu 20. ‘\0’ 21.
-> một toán tử có tác dụng hướng tới xử dụng câu lệnh/ hàm nào đó
-> là một toán tử thay thế khi đang ở trạng thái con trỏ 22.
Chú ý đến độ dài của mảng bất biến 23.
Stringstream ss()xử lí với chuỗi xóa thêm ss << lấy ss.str() điền ss>>
chuyển đổi i – str : << chuỗi ; >> số 24.
Hàm xâu cực mạnh getline: tách chuỗi, nhập chuỗi getline(nhập,lưu);
getline(nhập, lưu , kí hiệu tách) 25.
Lập trình hướng đối tượng{ class, object
class *name = new class // khởi tạo một object cấp phát bộ nhớ động
class có thể khai báo trong hoặc ngoài hàm
Khi trong hàm, class vừa intilize vừa tạo object và chỉ hàm
đấy xử dụng trong hàm đấy hoi
PUBLIC được phép truy cập từ luồng ngoài-> hàm
PRIVATE không được phép->thông tin đinh nghĩa muốn thay
đổi dữ liệu phải có METHOD trong PUBLIC truy xuất :
dữ liệu name -> định nghĩa trong class (value ) METHOD: hàm : name.method()
CONSTRUC: gọi lại hàm đó trong hàm có ngầm định và tường minh
cách gán nhanh : nam1(biến tham số) ... hàm( kdl & biến) :
tham chiếu không cho sao chép dữ liệu và thay đổi dữ liệu gốc
hàm( const kdl &biến ) : tham chiếu không sao chép và không
làm thay đổi dữ liệu gốc(+)
Destructor : hàm hủy ~nameClass()
Delete object Tính kế thừa lại những định nghĩa:
Class name : public namebase phải định
nghĩa lại construc, distruc,... }
TEMPLATE: KHUÔN MẪU, ĐỊNH NGHĨA CHO NHIỀU KIỂU DỮ LIỆU
HÀM TEMPLATE : TEMPLATE(CLASS t1)định nghĩa một kiểu dữ liệu
linh hoạt t1, template<> chuyên hóa
CLASS TEMPLATE : ????? nạp chồng toán tử: friend instream , ostream , operator lOMoAR cPSD| 58833082
Dùng construc để là phương thức thấy đổi giá trị tỏng private con trỏ this
Hàm thay đổi giá trị private nếu ở trong vòng lặp thì sau khi
thoát vòng sẽ trả lại giá trị nguyên thủy, cách để thay đổi hẳn
thì chỉ dùng friend ostream& operator<<(ostream& out,
const Box& B) { out << B.length << " " <<
B.breadth << " " << B.height; return out; }
Hoặc truyền giá trị đó vào một biến khác cùng class
operator: gọi lại hà
không thể in ra địa chỉ một các thủ công
Nullptr; con trỏ null
26. Chú ý nhập string dùng
getline(cin, a )
27. CCLS :tune check
28. Nạp chồng toán tử +
29. Loại bỏ khảng trắng và biến đổi string thành số nguyên +#include using namespace std; string
ltrim(const string &); string rtrim(const string &); lOMoAR cPSD| 58833082 vector split(const string &); /* * Complete the 'dynamicArray' functionbelow. *
* The function is expected to return
an INTEGER_ARRAY. * The function accepts following parameters: * 1. INTEGER n * 2. 2D_INTEGER_ARRAY queries */ vector dynamicArray(int n, vector> queries) { } int main() { ofstre am fout(getenv("OUTPUT_PATH"));
string first_multiple_input_temp; lOMoAR cPSD| 58833082 getline(cin, first_multiple_input_temp); vector first_multiple_input =
split(rtrim(first_multiple_input_temp)) ; int n =
stoi(first_multiple_input[0]); int q =
stoi(first_multiple_input[1]); vector> queries(q);
for (int i = 0; i < q; i++) { queries[i].resize(3);
string queries_row_temp_temp; getline(cin, queries_row_temp_temp); vector queries_row_temp
= split(rtrim(queries_row_temp_temp));
for (int j = 0; j < 3; j++) { int queries_row_item = lOMoAR cPSD| 58833082 stoi(queries_row_temp[j]);
queries[i][j] = queries_row_item; } } vector result = dynamicArray(n, queries); for (size_t i = 0; i < result.size(); i++) { fout << result[i]; if (i != result.size() - 1) { fout << "\n"; } } fout << "\n"; fout.close(); return 0; }
string ltrim(const string &str) { string s(str); lOMoAR cPSD| 58833082 s.erase( s.begin(), find_if(s.begin(), s.end(),
not1(ptr_funint>(isspace))) ); return s; }
string rtrim(const string &str) { string s(str); s.erase(
find_if(s.rbegin(), s.rend(),
not1(ptr_funint>(isspace))).base(), s.end() ); return s; }
vector split(const string &str) { vector tokens; lOMoAR cPSD| 58833082 string::size_type start = 0;
string::size_type end = 0; while ((end = str.find(" ", start)) != string::npos) {
tokens.push_back(str.substr(start, end - start)); start = end + 1; }
tokens.push_back(str.substr(start)); return tokens; }
Stack<> kiểu dữ liệu ngăn xếp •
size : trả về kích thước hiện tại
của stack. ĐPT O(1). •
empty : true stack nếu rỗng, và ngược lại. ĐPT O(1). •
push : đẩy phần tử vào stack. ĐPT O(1). •
pop : loại bỏ phẩn tử ở đỉnh của stack. ĐPT O(1). lOMoAR cPSD| 58833082 •
top : truy cập tới phần tử ở đỉnh
stack. ĐPT O(1) tìm giá trị : find , find_if +tìm giá trị của mảng +tìm giá trị trong struct
auto it = std::find_if(people.begin(),
people.end(), [target_name](const
Person& p) { return p.name == target_name;}) QUEUE •
push(): Add element to the end
row. pop(): Xóa phần tử ở đầu
hàng. front(): Get element at the top queue. •
back(): Get element at the end
row. empty(): Kiểm tra hàng chờ
trống hay không. size():L