+চ্ছিক উপাদানগুলির সাথে জোড়গুলির সি ++ 17 ভেক্টর কীভাবে শুরু করতে হয়


34

সি ++ 17 এ, আপনি কীভাবে একটি alচ্ছিক উপাদান দিয়ে জোড় (বা টিপলস) এর একটি ভেক্টর ঘোষণা এবং প্রারম্ভিক করবেন?

    std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
                                                           {2, false}, 
                                                           {3, nullptr}};

আমার একটি জুড়ি রয়েছে যেখানে দ্বিতীয় উপাদানটি নাল / alচ্ছিক হতে পারে।


1
std::piecewise_constructআকর্ষণীয় বিকল্প প্রদান করতে পারেন।
মার্ক গ্লিস


@ জুলিয়েন লোপেজ এটি নিয়োগের কথা বলছে।
এলএফ

@ এলএফ একই প্রশ্ন যখন আপনি অপ্রাসঙ্গিক প্রসঙ্গটি সরিয়ে দিন: আপনি কীভাবে একটি খালি optionচ্ছিক তৈরি করবেন?
জুলিয়ান লোপেজ

1
@ জুলিয়েন লোপেজ সি ++ এ, সূচনা এবং কার্যনির্বাহী সাধারণভাবে খুব আলাদা। দুটি প্রশ্নের ওভারল্যাপিং সমাধান রয়েছে বলেই বোঝায় যে সেগুলি একই। বিশেষত, নোট করুন যে আপনি resetএখানে ব্যবহার করতে চান না ।
এলএফ

উত্তর:


49

আপনি std::nulloptপরিবর্তে খুঁজছেন nullptr

std::vector<std::pair<int, std::optional<bool> > > vec1 =
  { {1, true}, {2,false}, {3,std::nullopt} };

3
(হট নেটওয়ার্ক প্রশ্নগুলির লিঙ্ক থেকে এখানে আসছেন) সি ++ কোড কি সর্বদা std::এই জাতীয় স্প্যাম করে ? শুধু using std::vectorএবং বন্ধুরা কেন নয় , তাই আপনি কেবল লিখতে পারেন vector<pair<int, optional<bool>>? আরও সান্নিধ্যে পড়ুন
আলেকজান্ডার -

17
@ আলেকজান্ডার-রিইনস্টেটমোনিকা "আরও বুদ্ধিমানভাবে পড়েন" বিষয়গত হয়। পাঠযোগ্যতা যুক্তির উল্টানো পার্শ্ব ভালো কিছু হল: আমি সব চিত্র ফাইল শীর্ষে ফেরার পথে বাইরে যেতে হবে চাই না যা বিশেষ vector , pair, optional, ইত্যাদি আমি এই লাইনে ব্যবহার করছি। নেমস্পেস ইনলাইন অন্তর্ভুক্ত করে আমাকে নির্বিঘ্নে জানায় যে সেই ফাংশনটি কোথা থেকে আসে এবং এটি কী করে; লাইনটি স্বয়ংসম্পূর্ণ। এটি বড় প্রকল্পগুলির জন্য বিশেষত সত্য (যেহেতু এটি সম্পূর্ণরূপে নেমস্পেসের বিরোধগুলি এড়িয়ে চলে), তবে সংক্ষিপ্ত কোড উদাহরণগুলির জন্যও এটি কার্যকর।
probably_someone

3
@ আলেকজান্ডার-রেইনস্টেটমোনিকা সেই যুক্তিটি ঠিক আছে যদি আপনি সুনির্দিষ্টভাবে লিখেছিলেন এমন কোড ব্যবহার করে এমন কোনও কোডের উপরে আপনার সম্পূর্ণ তদারকি এবং নিয়ন্ত্রণ রয়েছে (কারণ তখন "সংঘর্ষের ঘটনা ঘটে" এর বাইরে যখন আপনি জানেন তখনই আপনি অবশ্যই জানেন)। তবে আপনি যদি এমন কিছু করছেন, উদাহরণস্বরূপ, একটি লাইব্রেরি বা এমন একটি API বিকাশ করা যা অন্য বিকাশকারীদের একগুচ্ছ ব্যবহারের উদ্দেশ্যে তৈরি করা হয়, তবে / যখন এই ধরণের সংঘর্ষ ঘটে তখন আপনি প্রতিটি একক ব্যবহার পর্যবেক্ষণ করতে পারবেন না। এটির (তুলনামূলকভাবে সাধারণ) ক্ষেত্রে সাধারণত প্রাক-শূন্য সংঘর্ষগুলির ক্ষেত্রে আরও ভাল তবে কারও অভিযোগ যে কেবলমাত্র আপনার পণ্যটি নষ্ট হয়ে গেছে তার পরে সেগুলি ঠিক করুন।
probably_someone

3
@ আলেকজান্ডার-রেইনস্টেটমোনিকা নীচের কোনটি অবিলম্বে বুঝতে পারছেন যে একটি শীর্ষ-স্তরের নাম std? arg, count, find,size
এলএফ

4
@ আলেকজান্ডার-রেইনস্টেটমোনিকা আমার std::কাছে সম্পূর্ণরূপে আপত্তিজনক। নেমস্পেসের নামটি বেশি দীর্ঘ হলে এটি আলাদা হবে।
কার্স্টেন এস

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