জিরোস সি ++ / সি ++ 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.