Computer >> Máy Tính >  >> Lập trình >> C ++

Các tính năng ẩn của C ++

Ở đây chúng ta sẽ thấy một số tính năng và thủ thuật hay của ngôn ngữ lập trình C ++ có thể giúp chúng ta trong các lĩnh vực khác nhau. Giống như nếu chúng ta muốn tham gia một số sự kiện lập trình cạnh tranh, thì những thủ thuật này sẽ giúp chúng ta giảm thời gian viết mã. Hãy để chúng tôi xem từng ví dụ một.

Kiểm tra xem một số là số lẻ hay số chẵn mà không cần sử dụng toán tử%. Thủ thuật này là đơn giản. Chúng ta có thể thực hiện phép toán theo bitwise AND với số và 1. Nếu kết quả là khác 0 thì giá trị này là số lẻ, ngược lại là số chẵn. Logic quá đơn giản. Tất cả các số lẻ đều có 1 ở LSb. Vì vậy, sau khi thực hiện AND với 1, nó sẽ che tất cả các ký tự ngoại trừ LSb để chúng ta có thể dễ dàng nhận được kết quả mong muốn.

 if ((n &1)! =0) {// cái này là lẻ} else {// Cái này chẵn} 

Nhân và chia nhanh bằng cách sử dụng toán tử shift. Nếu chúng ta muốn nhân một số với một số như 2n thì chúng ta có thể đơn giản chuyển số sang trái n lần. Tương tự, nếu chúng ta muốn chia một số cho 2n thì hãy chuyển số đó sang phải n lần.

x =40; y =x <<2; // x sẽ nhân với 4 nên y =160cout <> 2; // x sẽ chia cho 4 nên y =10cout <

Chúng ta có thể hoán đổi hai số mà không cần sử dụng biến thứ ba. Điều này có thể được thực hiện bằng cách sử dụng các toán tử + và -. Nhưng chúng ta cũng có thể làm điều đó bằng cách sử dụng toán tử XOR bitwise. Bạn có thể kiểm tra các số theo cách thủ công để đảm bảo.

 // hoán đổi x và yx ^ =y; y ^ =x; x ^ =y; 

Đôi khi có một số ràng buộc khiến chúng ta không thể sử dụng hàm strlen () trong mã của mình. Trong trường hợp đó, chúng ta tạo hàm strlen () của riêng mình. Nếu trường hợp chỉ truy cập các ký tự, thì chúng tôi thực sự không cần phải làm điều này. Chúng ta có thể kiểm tra xem ký tự ở vị trí i có hợp lệ (khác 0) hay không. Nếu giá trị này khác 0, chúng ta có thể đi qua, nếu không thì dừng lại.

 for (int i =0; s [i]; i ++) {cout < 

Thông thường, chúng ta sử dụng hàm push_back () trong STL để thêm phần tử mới vào một số vùng chứa như vector, v.v. Nếu không sử dụng, chúng ta có thể sử dụng emplace_back () cũng được. Chức năng này nhanh hơn nhiều. Điều này không cấp phát bộ nhớ ở một nơi khác, nó gắn thêm bộ nhớ được cấp phát vào vùng chứa.

C ++ cung cấp hàm GCD có sẵn. Chúng ta có thể sử dụng chúng trong các trường hợp khác nhau. Cú pháp như dưới đây.

 __gcd (x, y) // tìm GCD của x và y 

Kích thước tối đa của một mảng trong hàm main là 10 ^ 6. Nhưng nếu mảng được khai báo toàn cục, chúng ta có thể khai báo kích thước lên đến 10 ^ 7.

Chúng tôi có thể tính toán chữ số quan trọng nhất của bất kỳ số nào bằng thao tác ghi nhật ký. Hãy xem logic sau để có được ý tưởng

 n =4578; double k =log10 (n); k =k - floor (k); int x =pow (10, k); // x là chữ số có nghĩa nhất 

Trực tiếp tính toán số chữ số bằng thao tác nhật ký. Chúng tôi không sử dụng bất kỳ vòng lặp nào cho việc này.

 n =4578; int digit_count =floot (log10 (n)) + 1 

Chúng ta có thể kiểm tra trực tiếp con số có phải là lũy thừa của 2 hay không bằng cách sử dụng logic này.

 x =1024; bool check =x &&(! (x &(x-1))); // nếu điều này là đúng, thì lũy thừa của hai. 

Một số thuật toán sẵn có trong C ++, có thể kiểm tra các điều kiện sau.

 all_of (left, left + n, isPositive ()); // kiểm tra tất cả là tích cực hay notany_of (left, left + n, isPositive ()); // kiểm tra ít nhất một dương hay không.none_of (left, left + n, isPositive ()); // kiểm tra không có phần tử nào là dương 

Chức năng sao chép để sao chép các phần tử từ vùng chứa này sang vùng chứa khác.

 int src [5] ={10, 20, 30, 40, 50}; int des [5]; copy_n (src, 5, dest); 

Có một thuật toán gọi là itoa (). Thuật toán này có thể được sử dụng để tạo một phạm vi giá trị tăng dần theo thứ tự như thể bằng cách gán giá trị ban đầu cho * trước, sau đó sử dụng giá trị bằng cách sử dụng toán tử tăng sau.

 int arr [5] ={0}; char str [5] ={0}; itoa (arr, arr + 5, 15); // nó sẽ tạo ra {15, 16, 17, 18, 19} itoa (str, str + 5, ‘A’); // nó sẽ tạo ra {‘A’, ‘B’, ‘C’, ‘D’, ‘E’} 

Gán giá trị ở dạng Binary. Chúng ta có thể sử dụng tiền tố 0b với một số nhị phân để biểu thị rằng số được cung cấp ở dạng nhị phân.

 int x =0b1101; // thì x sẽ giữ 13 

Trong C ++, chúng ta có thể sử dụng các từ khóa mà không cần sử dụng các toán tử điều kiện. Như từ khóa ‘và’ có thể được sử dụng thay cho ‘&’.

 x =10; if (x <10 và x> 5) cout <<“True” <