জিরোস সি ++ / সি ++ 11 এ কোনও ভেক্টর সূচনা করুন


118

আমি সি ++ এ জানি তারা এগুলি হিসাবে ভেরিয়েবলটি শূন্যে আরম্ভ করার জন্য বৈশিষ্ট্যটি যুক্ত করেছে

double number = {}; // number = 0
int data{};  // data = 0

std::vectorসমস্ত শূন্যের একটি নির্দিষ্ট দৈর্ঘ্যের একটিকে আরম্ভ করার জন্য কি একই রকম উপায় আছে ?


13
std::vector<int> vec(42);
— অবাকর

9
বিটিডব্লিউ, এটি সি ++ এ নতুন নয়, আপনি আগের সংস্করণগুলিতেও এটি করতে পারেন
— বালকি

উত্তর:


220

এর জন্য আপনার আরম্ভের তালিকার দরকার নেই:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
আপনার 0 টি স্পষ্ট করে বলার দরকার নেই? শুধু vector(length)কাজ করা উচিত?
— ড্যানিয়েল গ্রেটজার

38
@ জোজেফগ: হ্যাঁ, এটি কার্যকর হবে, যদিও আপনি কোডটি কী করতে চান সে সম্পর্কে সুস্পষ্ট হওয়ার কোনও ক্ষতি নেই।
— ronag

1
@ronag আমি আমার নিজের উত্তর লিখেছি কারণ এই ক্ষেত্রে সুস্পষ্ট হওয়া খুব ভাল উদাহরণ নয় যে যদি তিনি কাজ করছেন এমন ধরণের না হয়। জিরাল প্রোগ্রামিং সি ++ এ উপলব্ধ তবে যখন আমাকে মনে করিয়ে দেওয়া হয়েছিল যে আপনি যুক্তিটি পুরোপুরি বাদ দিতে পারেন, আমি আমার উত্তর সরিয়েছি।
— জোহানেস স্কাউব -

1
কোনও ভেক্টর স্বয়ংক্রিয়ভাবে 0 থেকে শুরু হয়ে যায়, আপনি যদি ঘোষণায় কিছু অন্যান্য মান নির্দিষ্ট না করেন, যেমনটি রোন্যাগ দেখিয়েছিল।
— নিকোস

ZEROলুপের জন্য ব্যবহার না করে দক্ষতার সাথে গ্লোবাল ভেক্টরের সমস্ত উপাদান পুনরায় আরম্ভ করা সম্ভব ??????
— অঙ্কিত মিশ্র

0

স্ট্রাক্ট, ক্লাস বা ইউনিয়নযুক্ত ভেক্টরটি শুরু করার পদ্ধতি এইভাবে করা যেতে পারে

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.