Доорхи өөрчлөлтүүд нь С++ компиляторын шинэ стандартын дагуу уг номын 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; friend class BSTree; Загвар найз классын зарлалт
template friend class AVLtree; 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 хайлтын программын кодыг засварласан