(দ্রষ্টব্য: এই প্রশ্নটি উপাদানগুলির সংখ্যা নির্দিষ্ট করে না দেওয়া এবং এখনও নেস্টেড ধরণগুলি সরাসরি শুরু করার অনুমতি দেওয়ার বিষয়ে ))
এই প্রশ্নটি সি অ্যারের মতো বাম ব্যবহারগুলি নিয়ে আলোচনা করে int arr[20];
। উপর তার উত্তর , @James Kanze শো সি অ্যারে শেষ শক্ত ঘাঁটি এক, এটি অনন্য আরম্ভের বৈশিষ্ট্য আছে:
int arr[] = { 1, 3, 3, 7, 0, 4, 2, 0, 3, 1, 4, 1, 5, 9 };
আমাদের উপাদানগুলির সংখ্যা নির্দিষ্ট করতে হবে না, হুর! এখন বারবার সি ++ 11 ফাংশন সঙ্গে এটি উপর std::begin
এবং std::end
থেকে <iterator>
( বা আপনার নিজের রূপের ) এবং তুমি কখনো এমনকি তার আকার মনে করতে হবে।
এখন, এর সাথে std::array
কি অর্জনের কোনও (সম্ভবত টিএমপি) উপায় আছে ? এটিকে আরও সুন্দর দেখানোর জন্য ম্যাক্রোগুলির ব্যবহার অনুমোদিত। :)
??? std_array = { "here", "be", "elements" };
সম্পাদনা করুন : বিভিন্ন উত্তর থেকে সংকলিত মধ্যবর্তী সংস্করণটি এরকম দেখাচ্ছে:
#include <array>
#include <utility>
template<class T, class... Tail, class Elem = typename std::decay<T>::type>
std::array<Elem,1+sizeof...(Tail)> make_array(T&& head, Tail&&... values)
{
return { std::forward<T>(head), std::forward<Tail>(values)... };
}
// in code
auto std_array = make_array(1,2,3,4,5);
এবং সমস্ত ধরণের শীতল সি ++ 11 স্টাফ নিয়োগ করে:
- ভারিয়াদিক টেম্পলেটগুলি
sizeof...
- মূল্যসূত্র উল্লেখ
- নিখুঁত ফরওয়ার্ডিং
std::array
, অবশ্যই- অভিন্ন সূচনা
- অভিন্ন সূচনা সহ ফেরতের প্রকার বাদ দেওয়া
- অনুমান টাইপ করুন (
auto
)
এবং একটি উদাহরণ এখানে পাওয়া যাবে ।
যাইহোক , @ জোহানেস @ জায়েডের উত্তরের মন্তব্যে উল্লেখ করেছেন, আপনি যেমন কোনও ফাংশন দিয়ে নেস্টেড প্রকারগুলি শুরু করতে পারবেন না। উদাহরণ:
struct A{ int a; int b; };
// C syntax
A arr[] = { {1,2}, {3,4} };
// using std::array
??? std_array = { {1,2}, {3,4} };
এছাড়াও, প্রাথমিককরণের সংখ্যা বাস্তবায়ন দ্বারা সমর্থিত ফাংশন এবং টেম্পলেট আর্গুমেন্টের সংখ্যার মধ্যে সীমাবদ্ধ।
TMP
আপনার প্রশ্নটির অর্থ কী ?