কোন বুস্ট বৈশিষ্ট্যগুলি সি ++ 11 এর সাথে ওভারল্যাপ করে?


191

আমি আমার সি ++ দক্ষতা বেশ কয়েক বছর আগে তাকের উপর রেখেছিলাম এবং এখন মনে হয়, যখন আমার আবার প্রয়োজন হয়, ল্যান্ডস্কেপ পরিবর্তিত হয়েছে।

আমরা এখন সি ++ 11 পেয়েছি এবং আমার বোধগম্যতা এটি বুস্টের অনেকগুলি বৈশিষ্ট্যকে ওভারল্যাপ করে।

কিছু সংক্ষিপ্তসার রয়েছে যেখানে সেই ওভারল্যাপগুলি পড়ে আছে, কোন বুস্ট লাইব্রেরিগুলি উত্তরাধিকারে পরিণত হতে চলেছে, কোন সি ++ 11 বৈশিষ্ট্যগুলি উত্সাহিত করার পরিবর্তে ব্যবহার করতে হবে এবং কোনটি ভাল নয়?


4
বুস্ট টিআর 1 লাইব্রেরিটি প্রথম প্রয়োগ করেছিলেন। যেহেতু এখন এটি স্ট্যান্ডার্ডে রয়েছে তাই আপনার স্ট্যান্ডার্ড সংস্করণটি পছন্দ করা উচিত। বুস্ট.লাম্বদা হ'ল ধীরে ধীরে এখন আসল ল্যাম্বডাস দ্বারা প্রতিস্থাপিত।
কেরেক এসবি

6
উইকিপিডিয়া সি ++ 11 নিবন্ধটি সবচেয়ে পরিবর্তনের একটি ভাল সারসংক্ষেপ হয়েছে।
কিছু প্রোগ্রামার

উত্তর:


285

সি ++ 11 ভাষা বৈশিষ্ট্য বা লাইব্রেরি দ্বারা প্রতিস্থাপনযোগ্য

টিআর 1 (এগুলি টিআর 1 লাইব্রেরি হলে ডকুমেন্টেশনে চিহ্নিত করা হয় )

সি ++ 11 থেকে ফিরিয়ে নেওয়া বৈশিষ্ট্যগুলি:

সি ++ 17 ভাষা বৈশিষ্ট্য দ্বারা প্রতিস্থাপনযোগ্য:

স্ট্যান্ডার্ড টিম এখনও এটিতে কাজ করছে:

এমপিএলের একটি বড় অংশটি ভেরিয়াদিক টেম্পলেট ব্যবহার করে ছাঁটা বা সরাতে পারে। লেক্সিকাল কাস্টের কিছু সাধারণ ব্যবহারের ক্ষেত্রে স্ট্যান্ড :: টু স্ট্রিং এবং স্টাড :: স্টো এক্স দ্বারা প্রতিস্থাপন করা যেতে পারে ।

কিছু বুস্ট লাইব্রেরি সি ++ 11 সাথে সম্পর্কিত হয় কিন্তু আরো কিছু এক্সটেনশান নেই, যেমন Boost.Functional / হ্যাশ রয়েছে hash_combine সি ++ 11 মধ্যে পাওয়া যায়নি এবং সংশ্লিষ্ট ফাংশন, Boost.Chrono ইনপুট / আউটপুট এবং rounding এবং অনেক অন্যান্য ঘড়ি আছে, ইত্যাদি। সুতরাং আপনি এখনও উত্সাহিত ব্যক্তিদের সত্যই তা খারিজ করার আগে একবার দেখে নিতে পারেন।


1
লিস্টে যোগ করুন Boost.Chrono , Boost.Exception এবং Boost.Swap
iljarn

9
মনে রাখবেন যে বুস্ট.লাম্বদা (বা বরং, বুস্ট.ফিনিক্স ল্যাম্বডাস) এখনও পলিমারফিক ল্যাম্বডাসের জন্য দরকারী।
Xoo

2
ভাল তালিকা, যদিও আমি বিশ্বাস করি না std::unique_ptrএটি টিআর 1 এর একটি অংশ (যেহেতু এটির জন্য পদার্থবিজ্ঞানের প্রয়োজন)
নিমো

1
@ জিল্ডার্ন: বুস্ট.চ্রোনো <ক্রোনো> এর চেয়ে অনেক বেশি ফাংশন সরবরাহ করে। Boost.Exception - কেবল N2179 প্রাসঙ্গিক।
কেনেটিএম

2
@ নিমো: হ্যাঁ কেবল স্টাডি :: ট্র 1 :: শেয়ারড_পিটিআর টিআর 1-র অংশ, এবং কনস্ট স্ট্যান্ড :: অনন্য_পিটার বুস্ট :: স্কোপড_পিটার এবং বুস্টের ব্যবহারের কেসগুলি প্রতিস্থাপন করেছে: স্কেপড_আরয়ে
কেনেটিএম

55

আসলে, আমি মনে করি না বুস্ট লাইব্রেরিগুলি উত্তরাধিকার হয়ে উঠবে।

হ্যাঁ, আপনি ব্যবহার করতে সক্ষম হওয়া উচিত std::type_traits, regex, shared_ptr, unique_ptr, tuple<>, std::tie, std::beginবুস্ট Typetraits পরিবর্তে / ইউটিলিটি, Smartpointer বুস্ট, বুস্ট Tuple, রেঞ্জ লাইব্রেরি বুস্ট, কিন্তু বাস্তবে 'সুইচ' থেকে এর কোন প্রয়োজন হওয়া উচিত যদি না আপনি তার বেশি চলন্ত হয় আপনার কোড সি ++ 11।

এছাড়াও, আমার অভিজ্ঞতা অনুসারে, stdএর বেশিরভাগের সংস্করণগুলি কিছুটা কম বৈশিষ্ট্যযুক্ত। যেমন AFAICT মান নেই না আছে

  • পার্ল 5 নিয়মিত অভিব্যক্তি
  • call_traits
  • কিছু নির্দিষ্ট রেগেক্স ইন্টারফেস সদস্য (যেমন bool boost::basic_regex<>::empty()) এবং অন্য ইন্টারফেসের পার্থক্য
    • এটি বুস্ট এক্সপ্রেসিভের সাথে বুস্ট ইন্টারফেসের সাথে ঠিক মিলেছে বলে এটি আরও কামড়ায়
    • এবং এটি বুস্ট স্ট্রিং অ্যালগরিদমগুলির সাথে আরও দুর্দান্তভাবে খেলেছে স্পষ্টতই, আধুনিকগুলির কাছে স্ট্যান্ডার্ড অংশ নেই (এখনও?)
  • টিএমপি সম্পর্কিত অনেকগুলি জিনিস (বুস্ট ফিউশন)
  • অলস, এক্সপ্রেশন টেম্পলেট-ভিত্তিক ল্যাম্বডাস; তারা যেটা করতে পারে তাতে তাদের অনিবার্য সুবিধা রয়েছে সি ++ 11 এর বিপরীতে আজ বহুবর্ষীয় পারে । তাই তারা প্রায়শই অধিক সংক্ষিপ্ত হতে পারে:

     std::vector<int> v = {1,2,-9,3};
    
     for (auto i : v | filtered(_arg1 >=0))
         std::cout << i << "\n";
    
     // or:
     boost::for_each(v, std::cout << _arg1);

    সুনির্দিষ্টভাবে, এটি এখনও সি ++ 11 ল্যাম্বডাসের (কিছুটা পিছনে ফিরতি ধরণের, সুস্পষ্ট ক্যাপচারিং এবং ঘোষিত প্যারামিটারগুলির) সাথে কিছু আপিল করেছে।

এছাড়াও, বুস্টের জন্য একটি বিগ ভূমিকা আছে, সঠিকভাবে সি -+ 03 থেকে সি ++ 11-তে সি ++ 11 এবং সি ++ 03 কোডবাসগুলিকে সংহত করার জন্য পথ-অনুসারে স্থানান্তরকরণের সুবিধার্থে। আমি বিশেষভাবে চিন্তা করছি

  • বুস্ট অটো (BOOST_AUTO)
  • ইউটিলিটি বুস্ট করুন (boost::result_of<> এবং সম্পর্কিত)
  • বুস্ট ফরচ (BOOST_FOREach)
  • ভুলে যাবেন না: বুস্ট মুভ - যা বুট 1_48 + এবং সি ++ 11 সংকলক সহ সি ++ 03 সংকলকগুলিতে সমানভাবে সংকলন করবে এমন একটি সিনট্যাক্স সহ মুভ সিঁটমিকের সাথে ক্লাসগুলি লেখা সম্ভব করে তোলে।

শুধু আমার 0.02 ডলার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.