পারফরম্যান্স :
এটা নির্ভর করে.
আপনার বিশেষ ক্ষেত্রে কোনও পারফরম্যান্সের পার্থক্য থাকবে না কারণ দু'জন একইভাবে মেমরির মধ্যে রাখা হবে।
খুব নির্দিষ্ট ক্ষেত্রে (যদি আপনি কোনও ডেটা সদস্য হিসাবে খালি কাঠামো ব্যবহার করে থাকেন ) তবে std::pair<>খালি বেস অপটিমাইজেশন (ইবিও) সম্ভাব্যভাবে ব্যবহার করতে পারে এবং কাঠামোর সমতুলের চেয়ে কম আকার থাকতে পারে। এবং নিম্ন আকারের অর্থ উচ্চতর কর্মক্ষমতা:
struct Empty {};
struct Thing { std::string name; Empty e; };
int main() {
std::cout << sizeof(std::string) << "\n";
std::cout << sizeof(std::tuple<std::string, Empty>) << "\n";
std::cout << sizeof(std::pair<std::string, Empty>) << "\n";
std::cout << sizeof(Thing) << "\n";
}
মুদ্রণ: 32, 32, 40, 40 আইডোনে ।
দ্রষ্টব্য: আমি এমন কোনও বাস্তবায়ন সম্পর্কে অবগত নই যিনি আসলে নিয়মিত জোড়গুলির জন্য EBO কৌশল ব্যবহার করেন, তবে এটি সাধারণত টিপলসের জন্য ব্যবহৃত হয়।
পঠনযোগ্যতা :
মাইক্রো-অপটিমাইজেশন ছাড়াও, একটি নামক কাঠামোটি আরও অ্যারগোনমিক।
আমি বলতে চাইছি, সবেমাত্র বুদ্ধিমান হওয়ার map[k].firstসময়ও এটি খারাপ নয় get<0>(map[k])। এর বিপরীতে map[k].nameযা তাত্ক্ষণিকভাবে নির্দেশ করে যে আমরা কী থেকে পড়ছি।
প্রকারভেদগুলি একে অপরের সাথে রূপান্তরিত হওয়ার পরে এটি আরও গুরুত্বপূর্ণ, যেহেতু অজান্তে সেগুলি অদলবদল করা একটি সত্যিকারের উদ্বেগ হয়ে যায়।
আপনি স্ট্রাকচারাল বনাম নমিনাল টাইপিং সম্পর্কেও পড়তে চাইতে পারেন। Enteএটি একটি নির্দিষ্ট ধরণের যা কেবল প্রত্যাশিত জিনিসগুলির দ্বারা চালিত হতে পারে Ente, যে কোনও কিছু যা পরিচালনা std::pair<std::string, bool>করতে পারে সেগুলি তাদের উপর পরিচালনা করতে পারে ... এমনকি যখন তারা যা প্রত্যাশা করে না std::stringবা boolধারণ করে না, কারণ এর std::pairসাথে কোনও শব্দার্থবিজ্ঞান নেই ।
রক্ষণাবেক্ষণ :
রক্ষণাবেক্ষণের ক্ষেত্রে, pairসবচেয়ে খারাপ। আপনি কোনও ক্ষেত্র যোগ করতে পারবেন না।
tupleএই ক্ষেত্রে মেলা আরও ভাল, যতক্ষণ না আপনি নতুন ক্ষেত্রটি যুক্ত করেন ততক্ষণে বিদ্যমান বিদ্যমান ক্ষেত্রগুলি একই সূচক দ্বারা অ্যাক্সেস করা যায়। যা পূর্বের মতো অনির্বচনীয় তবে কমপক্ষে আপনাকে এগুলি আপডেট করার দরকার নেই।
structস্পষ্ট বিজয়ী। আপনি যেখানে মনে করেন ক্ষেত্রগুলি যুক্ত করতে পারেন।
উপসংহারে:
pair উভয় বিশ্বের সবচেয়ে খারাপ,
tuple খুব নির্দিষ্ট ক্ষেত্রে (খালি টাইপ) এর সামান্য প্রান্ত থাকতে পারে,
- ব্যবহার
struct ।
দ্রষ্টব্য: আপনি যদি গেটারগুলি ব্যবহার করেন তবে ক্লায়েন্টদের এটি সম্পর্কে যেমন না জেনে আপনি খালি বেস ট্রিকটি নিজেই ব্যবহার করতে পারেন struct Thing: Empty { std::string name; }; এ কারণেই এনক্যাপসুলেশন হ'ল পরবর্তী বিষয় যা আপনার নিজের উচিত concern
std::pairহল একটি struct।