เบžเบงเบเป€เบฎเบปเบฒเปเบ›เบฅเบฐเบซเบฑเบ” C++ 10 เบฅเป‰เบฒเบ™เปเบ–เบงเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++14 (เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ C++17)

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ (เปƒเบ™เบฅเบฐเบ”เบนเปƒเบšเป„เบกเป‰เบ›เบปเปˆเบ‡เบ‚เบญเบ‡เบ›เบต 2016), เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เป€เบงเบ—เบตเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต 1C: เบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบ•เปเปˆเป„เบ›, เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเบฒเบเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบซเบกเปˆ. C ++ 14 เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบซเบกเปˆ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ, เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบซเบผเบฒเบเบชเบดเปˆเบ‡เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก, เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰, เปเบฅเบฐเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ”เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบžเบดเป€เบชเบ”เปƒเบ™เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒ, เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰, 1C:Enterprise เปเบกเปˆเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบธเบฅเบฐเบเบดเบ”เบ‚เป‰เบฒเบกเป€เบงเบ—เบตเปเบฅเบฐเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™ OSes เปเบฅเบฐ DBMSs เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ›เบฐเบเบญเบšเบกเบต:

เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ - เบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เป€เบŠเบตเบŸเป€เบงเบตเปเบกเปˆเบ™ 99% เบ—เบปเปˆเบงเป„เบ›, เบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 95%. เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเป€เบ—เบเป‚เบ™เป‚เบฅเบเบต 1C: เบงเบดเบชเบฒเบซเบฐเบเบดเบ”เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบ•เปเปƒเบ™ C ++ เปเบฅเบฐเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เปเบกเปˆเบ™เปƒเบซเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰:

  • เบฅเบฐเบซเบฑเบ” C++ 10 เบฅเป‰เบฒเบ™เป€เบชเบฑเป‰เบ™,
  • 14 เบžเบฑเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹,
  • 60 เบžเบฑเบ™โ€‹เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹,
  • เป€เบ„เบดเปˆเบ‡โ€‹เบฅเป‰เบฒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹.

เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบ›เป€เบ›เบฑเบ™ C++14. เบกเบทเป‰โ€‹เบ™เบตเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบšเบญเบโ€‹เบ—เปˆเบฒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบ™เบตเป‰โ€‹เปเบฅเบฐโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบžเบปเบšโ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™.

เบžเบงเบเป€เบฎเบปเบฒเปเบ›เบฅเบฐเบซเบฑเบ” C++ 10 เบฅเป‰เบฒเบ™เปเบ–เบงเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++14 (เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ C++17)

เบ›เบฐเบ•เบดเป€เบชเบ”เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‚เบฝเบ™เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบŠเป‰เบฒ / เป„เบง, (เบšเปเปˆ) เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป‚เบ”เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเป‰เบญเบ‡เบฎเบฝเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ•เปˆเบฒเบ‡เป†เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡: เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฐเบซเบฐเบฅเบฑเบ”. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡: เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ, เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบˆเปเบฒเบ™เบงเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบšเปเบฅเบดเป‚เบžเบ, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปเบฅเบฐเบงเบดเป€เบ„เบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเปเปƒเบˆเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบผเบทเบšเปเปˆ. . เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบถเป‰เบ™เบเบฑเบš.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก 1C:Enterprise 8 เปƒเบ™ Microsoft Visual Studio. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป„เบ”เป‰โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปƒเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เบ›เบต 2000 เปเบฅเบฐโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบชเบฐโ€‹เบšเบฑเบš Windows เป€เบ—เบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ™เบฑเป‰เบ™เบกเบฒเบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™, เบเบปเบ™เป„เบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เปเบ•เปˆเบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ›เบต 1998, เปเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบงเบปเบ‡เป€เบฅเบฑเบšเบกเบธเบกเบ‚เบงเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเปเบเบเบญเบญเบเป‚เบ”เบเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

vector<vector<int> > IntV;

เปƒเบ™เบ›เบต 2006, เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบญเบเปเบžเบฅเบ”เบŸเบญเบกเป€เบงเบตเบŠเบฑเปˆเบ™ 8.1, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบฎเบญเบ‡เบฎเบฑเบš Linux เปเบฅเบฐเบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก. STLPport. เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เปเบกเปˆเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบกเบตเบชเบฒเบเบเบงเป‰เบฒเบ‡. เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ std::wstring, เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆเบ›เบฐเป€เบžเบ” wchar_t, เบ•เบฐเบซเบผเบญเบ”. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Windows เปเบกเปˆเบ™ 2 bytes, เปเบฅเบฐเปƒเบ™ Linux เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 4 bytes. เบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡เป‚เบ›เบฃเป‚เบ•เบ„เบญเบ™เบ„เบนเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบนเบเบ„เป‰เบฒ เปเบฅเบฐเป€เบŠเบตเบšเป€เบงเบต, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ„เบปเบ‡เบ„เป‰เบฒเบ‡เบ•เปˆเบฒเบ‡เป†. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ gcc, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ wchar_t เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™ 2 bytes, เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบทเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบฒเบ compiler, เป€เบžเบฒเบฐเบงเปˆเบฒ. เบกเบฑเบ™เปƒเบŠเป‰ glibc, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบš wchar_t 4-byte. เป€เบซเบ”เบœเบปเบ™เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash, เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ‚เบญเบ‡ semantics เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบžเบฒเบเปƒเบ™เบšเบฑเบ™เบˆเบธ, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡. เปเบฅเบฐเบญเบตเบเป€เบซเบ”เบœเบปเบ™เบซเบ™เบถเปˆเบ‡, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบชเบธเบ”เบ—เป‰เบฒเบเปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ, เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฒเบ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ ... เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบŠเบญเบšเปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™.

เบชเบฐเบ•เบฃเบดเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™เบ•เบปเป‰เบ™เบŠเบธเบกเบ›เบต 2000 Andrei Alexandrescu. เบ•เปเปˆเบกเบฒ, เป€เบกเบทเปˆเบญ Alexandrescu เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ Facebook, เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบฅเบฒเบง, เบชเบฒเบเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ‚เบญเบ‡ Facebook เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ (เป€เบšเบดเปˆเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เป‚เบ‡เปˆ).

เบชเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบชเบญเบ‡เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเป‰เบ™เบ•เป:

  1. เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒเบชเบฑเป‰เบ™, buffer เบžเบฒเบเปƒเบ™เปƒเบ™ string object เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ (เบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก).
  2. เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบเบปเบ™เบˆเบฑเบเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ เบชเบณเป€เบ™เบปเบฒเปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™. เบ„เปˆเบฒเบชเบฐเบ•เบฃเบดเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เบ”เบฝเบง, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบ™เบฑเบšเบญเป‰เบฒเบ‡เบญเบตเบ‡เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบกเบญเบšเปเบฒเบ/เบ”เบฑเบ”เปเบเป‰.

เป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก, เบžเบงเบเป€เบฎเบปเบฒเบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบˆเบฒเบเบ•เบปเบงเปเบ› STLPport เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ (เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰), เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบฅเบงเบšเบฅเบงเบกเป„เบงเบ‚เบถเป‰เบ™เบ›เบฐเบกเบฒเบ™ 20%. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰เปƒเบŠเป‰เบˆเปเบฒเบเบฑเบ” เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. Boost เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบขเปˆเบฒเบ‡เบซเบ™เบฑเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™ APIs เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ”เบฑเบ”เปเบ›เบ‡เบกเบฑเบ™เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบญเบญเบ. เบญเบฑเบ™เบ™เบตเป‰, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเป„เบ› Boost เบฎเบธเปˆเบ™เปƒเบซเบกเปˆ.

เบงเบดเบ—เบตเบ—เบตเบชเบฒเบก

เป€เบกเบทเปˆเบญเบเป‰เบฒเบเป„เบ›เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 14, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบญเบฑเบšเป€เบเบฃเบ” STLPport เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ”เบฑเบ”เปเบ›เบ‡เป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++14. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ STLPport เป„เบ”เป‰เบขเบธเบ”เป€เบŠเบปเบฒเปƒเบ™เบ›เบต 2010, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.
  2. เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” STL เบญเบทเปˆเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš C++14. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบชเบนเบ‡เบ—เบตเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบš Windows เปเบฅเบฐ Linux.
  3. เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ OS, เปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ compiler เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบฑเบ™เบ—เบตเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›.

เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒ; เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบœเบนเป‰เบชเบฐเปเบฑเบ libc++, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบžเบฒเบเปƒเบ•เป‰ Windows. เป€เบžเบทเปˆเบญเป€เบญเบปเบฒ libc++ เป„เบ›เปƒเบชเปˆ Windows, เป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เบฝเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš threads, thread synchronization เปเบฅเบฐ atomicity, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ libc++ เปƒเบŠเป‰เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. POSIX API.

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบ—เบฒเบ‡เบ—เบตเบชเบฒเบก.

เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เปƒเบŠเป‰ STLPort เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ‚เบญเบ‡ compilers เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ (Visual Studio 2015 เบชเปเบฒเบฅเบฑเบš Windows, gcc 7 เบชเปเบฒเบฅเบฑเบš Linux, clang 8 เบชเปเบฒเบฅเบฑเบš macOS).

เป‚เบŠเบเบ”เบต, เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ tricks เบชเบฐเบซเบฅเบฒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบซเบกเปˆเบ”เปเบฒเป€เบ™เบตเบ™เป„เบ›เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบฅเบฝเบšเบ‡เปˆเบฒเบ, เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ—เบ™เบŠเบทเปˆเบ›เบฐเป€เบžเบ”, เบŠเบฑเป‰เบ™เบฎเบฝเบ™, namespaces เปเบฅเบฐเบฅเบงเบกเบขเบนเปˆเปƒเบ™เปเบซเบผเปˆเบ‡. เป„เบŸเบฅเปŒ. เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡ 10 (เบญเบญเบเบˆเบฒเบ 000). wchar_t เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ char14_t; เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เปƒเบŠเป‰ wchar_t, เป€เบžเบฒเบฐเบงเปˆเบฒ char000_t เปƒเบŠเป‰ 16 เป„เบšเบ•เปŒเปƒเบ™เบ—เบธเบ OS เปเบฅเบฐเบšเปเปˆเบ—เปเบฒเบฅเบฒเบเบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบฅเบฐเบซเบงเปˆเบฒเบ‡ Windows เปเบฅเบฐ Linux.

เบกเบตเบเบฒเบ™เบœเบฐเบˆเบปเบ™เป„เบžเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ STLPport เป‚เบ• iterator เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป‚เบเบ™เบฅเบปเบ‡เป„เบ›เป€เบ›เบฑเบ™เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ”เปœเบถเปˆเบ‡, เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบซเบกเปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰, เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบ‚เบฝเบ™เปƒเบซเบกเปˆเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” (เปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™เป€เบ–เบดเบ‡ 20-30%) เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ (เป€เบ–เบดเบ‡ 10-15%) เป€เบกเบทเปˆเบญเบ—เบฝเบšเบเบฑเบšเบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”. เบ™เบตเป‰เปเบกเปˆเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบชเบฒเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ”เบฑเบ”เปเบเป‰เป€เบฅเบฑเบเบ™เป‰เบญเบ.

เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบˆเบธเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบฑเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบเบเบฑเบ‡: เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ (เบšเปเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบš) std::map เปเบฅเบฐ std:: เบเปเบฒเบ™เบปเบ”เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบ–เบฑเบ‡เป€เบ›เบปเปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบšเบฑเบ™เบˆเบธเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบฎเบฒเบเบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ™เบตเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™ - เปƒเบ™เบซเบผเบฒเบเป†เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ (เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบš STLPort). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เปˆเบฝเบ™เบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฒเบ Boost, เบšเปˆเบญเบ™เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰, เปเบฅเบฐเบ™เบตเป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เป‰เบงเบเบเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบˆเปเบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบเบฒเบ™ iteration เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš debugging iterators เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Windows เปเบกเปˆเบ™เบกเบตเบ›เบฐเป‚เบซเบเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบ‚เป‰เบฒเบ‡เปœเป‰เบฒ, เปเบฅเบฐเปƒเบ™เบฅเบฐเบ”เบนเปƒเบšเป„เบกเป‰เบ›เบปเปˆเบ‡เบ‚เบญเบ‡เบ›เบต 2017 (เป€เบงเบตเบŠเบฑเบ™ 8.3.11 1C:Enterprise) เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ”เป‰เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++14 เป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 6 เป€เบ”เบทเบญเบ™. เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เป€เบงเบฅเบฒ, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบ™เบถเปˆเบ‡ (เปเบ•เปˆเบกเบตเบ„เบธเบ™เบงเบธเบ”เบ—เบดเบชเบนเบ‡เบซเบผเบฒเบ) เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™, เปเบฅเบฐเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบœเบนเป‰เบ•เบฒเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบชเบฐเป€เบžเบฒเบฐเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก - UI, เบเบธเปˆเบกเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเปเบฅเบดเบซเบฒเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ›เบชเบนเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบฎเบธเปˆเบ™เบซเบผเป‰เบฒเบชเบธเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฎเบธเปˆเบ™ 1C:Enterprise 8.3.14 (เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเป‰เบ™เบ›เบตเบซเบ™เป‰เบฒ) เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบชเบนเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเป‰เบง. C++17.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบผเบฒเบเบ‚เบถเป‰เบ™. เบ–เป‰เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฐเบšเบฑเบšเบ”เบฑเบ”เปเบเป‰เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡ STL เปเบฅเบฐเบซเบ™เบถเปˆเบ‡ std namespace, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเป‰เบญเบ‡เบฎเบฝเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” compiler เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™ std namespace, เปƒเบ™ namespace stdx - เบชเบฒเบเปเบฅเบฐ containers เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ optimized เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปƒเบ™ boost - the เบฎเบธเปˆเบ™เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡ boost. เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบฅเบฒเบง.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” "เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡" เบ‚เบญเบ‡เบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบเบฑเบ‡เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ (เบเป‰เบฒเบเบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡) เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบซเป‰เบญเบ‡โ€‹เบฎเบฝเบ™โ€‹. เบ–เป‰เบฒเบซเป‰เบญเบ‡เบฎเบฝเบ™เบกเบตเบ•เบปเบงเบชเป‰เบฒเบ‡เบเป‰เบฒเบเปเบฅเบฐเบŠเบฑเป‰เบ™เบ™เบตเป‰เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบ–เบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ STL เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบžเบฒเบเปƒเบ™เบ–เบฑเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ–เบทเบเบ‚เบฐเบซเบเบฒเบเปเบฅเบฐเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบ„เบงเบฒเบกเบญเบฒเบ”เบชเบฒเบกเบฒเบ”เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆ).

เบšเปˆเบงเบ‡ tar

เบšเบฒเบ‡เบ—เบตเบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ—เบตเปˆเบšเปเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ” (เปเบ•เปˆเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™) เบ‚เบญเบ‡เบเบฒเบ™เบเบปเบเบเป‰เบฒเบเปเบกเปˆเบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™. เป„เบŸเบฅเปŒ obj, เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฑเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเบเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเป€เบ–เบดเบ‡ 60-70 GB. เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบ peculiarities เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบ™เป‰เบญเบเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบกเบฑเบ™เป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบชเบเปŒเบŸเบฃเบตเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบชเป‰เบฒเบ‡เปเบฅเบฐเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเปเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเบฎเบธเปˆเบ™เบ‚เบญเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ‚เบฐเบซเบ™เบฒเบ™, เปเบฅเบฐเบซเบผเบฒเบเบฎเป‰เบญเบ gigabyte เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบฒเบ‡เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบšเปเปˆเบžเปเปƒเบˆ, เปเบ•เปˆเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™; เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบทเปˆเบญเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบญเบ™เบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฑเบเบ„เบต (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, Google เปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš Chrome).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™