Доорхи өөрчлөлтүүд нь С++ компиляторын шинэ стандартын дагуу уг номын 2022 онд хэвлэгдсэн 5 дахь хэвлэлтэнд орсон. Номын 2022 оноос өмнөх хэвлэлтүүдэд орсон С++ программын эх кодуудын зарим дүрмүүд нь сүүлийн үеийн стандартад тохирохгүй болсон.
| Кодын шинэ өөрчлөлт | Хуучин код | Тайлбар |
|---|---|---|
| int main() | void main() | 1999 С++ стандартаас эхлээд main() функц нь заавал ‘int’ төрлийг буцаана. |
| #include <iostream> using namespace std; |
#include <iostream.h> | Стандарт толгой файлын шинэ хэрэглээ |
| #include <iomanip> #include <ctime> #include <cstring> |
#include <iomanip.h> #include <time.h> #include <string.h> |
Стандарт толгой файлын шинэ хэрэглээ |
| MAX | max | ‘max’ нь сүүлийн үеийн компиляторуудад загвар функцээр тодорхойлогдсон. |
| static int solution = 0; | static solution = 0; | static хувьсагчийн өгөгдлийн төрлийг тодорхойлох шаардлагатай (8 ба N бэрсний программд) |
| else return search(p->next, d); | else search(p->next, d); | Компиляторын анхааруулга: Node *LinkedList::search(Node *p, Data d) {…} рекурст функц төгсөхөд утга буцаах шаардлагатай |
| mouse = new int [N] (); fill_n(mouse, N, 1); |
mouse = new int [N] (1); | Анхны утга олгох хуучин хэлбэрийн өөрчлөлт |
| #define STLEN 80 fgets(s, STLEN, stdin); |
gets(s) | Компиляторын анхааруулга: ‘char* gets(char*)’ функцыг ашиглахаас татгалзах хэрэгтэй |
| char match(char cp) { char op; switch (cp) { case ‘)’ : op = ‘(‘; break; case ‘}’ : op = ‘{‘; break; case ‘]’ : op = ‘[’; break; } return op; } |
char match(char cp) { switch (cp) { case ‘)’ : return ‘(‘; case ‘}’ : return ‘{‘; case ‘]’ : return ‘[’; } } |
Компиляторын анхааруулга: (Хаалтуудын баланс шалгах программд) функц төгсөхөд утга буцаах шаардлагатай |
| const char *s=”stacks”; | char *s=”stacks”; | Компиляторын анхааруулга: (Стекийг массиваар илэрхийлэх программын кодод) тэмдэгт мөрийн тогтмолыг ‘char*’ руу хөрвүүлэхийг ISO C++ зөвшөөрөхгүй |
| const char* postfix=”abc+de*f+”; | char* postfix=”abc+de*f+”; | Компиляторын анхааруулга: (Хоёртын модны программын кодод) тэмдэгт мөрийн тогтмолыг ‘char*’ руу хөрвүүлэхийг ISO C++ зөвшөөрөхгүй |
| char text[] = “this is a searching examples for boyer moore algorithms”; | char *text = “this is a searching examples for boyer moore algorithms”; | Компиляторын анхааруулга: Boyer-Moore хайлтын программын кодод тэмдэгт мөрийн тогтмолыг ‘char*’ руу хөрвүүлэхийг ISO C++ зөвшөөрөхгүй |
| { p[j+1] = p[j]; j––; } |
p[j+1] = p[j––]; | Зарим компиляторууд хорогдуулах үйлдлийг утга олгох үйлдлээс өмнө хийдэг |
| if(d < tp->data) return search(tp->l,d); else return search(tp->r,d); |
if(d < tp->data) search(tp->l,d); else search(tp->r,d); |
Компиляторын анхааруулга: function template <class Type> bool BSTree<Type>::search(Node *tp, Type d) {…} функц төгсөхөд утга буцаах шаардлагатай |
| template |
friend class BSTree |
Загвар найз классын зарлалт |
| template |
friend class AVLtree |
Загвар найз классын зарлалт |
| void initpos(char *pat) | initpos(char *pat) | (Boyer-Moore хайлтын программын кодод) функц нь ямар нэг утга буцаахгүй бол void утга буцаахаар тодорхойлох хэрэгтэй |
| int bmsearch(char *pat, char *text) | (the same function) | Boyer-Moore хайлтын программын кодыг засварласан |
| int kmpsearch(char *pat, char *text) | (the same function) | KMP хайлтын программын кодыг засварласан |
| int naivesearch(char *pat, char *text) char *naivesearch1(char *pat, char *text) void naivesearchall(char *pat, char *text) |
(the same functions) | Naive хайлтын программын кодыг засварласан |
