পারফরম্যান্স :
এটা নির্ভর করে.
আপনার বিশেষ ক্ষেত্রে কোনও পারফরম্যান্সের পার্থক্য থাকবে না কারণ দু'জন একইভাবে মেমরির মধ্যে রাখা হবে।
খুব নির্দিষ্ট ক্ষেত্রে (যদি আপনি কোনও ডেটা সদস্য হিসাবে খালি কাঠামো ব্যবহার করে থাকেন ) তবে 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।