সি ++ ভ্যালারি বনাম ভেক্টর


159

আমি ভেক্টরকে অনেক পছন্দ করি। তারা নিফটি এবং দ্রুত। তবে আমি জানি এই জিনিসটির নাম একটি ভ্যালারির উপস্থিত রয়েছে। আমি কেন কোনও ভেক্টরের পরিবর্তে ভ্যালারি ব্যবহার করব? আমি জানি যে ভালারিগুলিতে কিছু সিনট্যাকটিক চিনি রয়েছে তবে সেগুলি বাদে তারা কখন কার্যকর হয়?


2
অন্য দিনও ঠিক এই বিষয়টি নিয়ে ভাবছিলাম। আমি যতদূর জানি, এটি সত্যিই ঠিক যেমন বিশেষায়িত গণিত ভেক্টর।
GManNickG

ভ্যালারায় কি অভিব্যক্তি টেম্পলেটগুলি করে না?
মাকিং হাঁস

পদার্থবিজ্ঞানী উলরিচ মিটেজে valarray এখানে এবং এখানে
লাইফব্লেন্স

উত্তর:


70

ভ্যালারাইস (মান অ্যারে) ফর্ট্রানের গতি কিছুটা সি ++ এ নিয়ে আসার উদ্দেশ্যে। সংকেতকারী কোড সম্পর্কে অনুমানগুলি তৈরি করতে এবং এটি আরও ভাল করে তুলতে পারে তাই আপনি পয়েন্টারগুলির কোনও ভ্যালার্য তৈরি করতে পারবেন না। (ফোর্টরান এত দ্রুত হওয়ার মূল কারণটি হ'ল কোনও পয়েন্টার টাইপ নেই তাই কোনও পয়েন্টার এলিয়াসিং নাও থাকতে পারে))

ভ্যালারায় এর ক্লাসও রয়েছে যা আপনাকে এগুলি যুক্তিসঙ্গত সহজ উপায়ে টুকরো টুকরো করার অনুমতি দেয় যদিও স্ট্যান্ডার্ডের সেই অংশটি আরও কিছু কাজ ব্যবহার করতে পারে। তাদের আকার পরিবর্তন করা ধ্বংসাত্মক এবং তাদের পুনরাবৃত্তির অভাব রয়েছে।

সুতরাং, এটির সংখ্যাগুলি যদি আপনি কাজ করে যাচ্ছেন এবং সুবিধাগুলি এই সমস্ত গুরুত্বপূর্ণ ব্যবহারের ভ্যালারি নয়। অন্যথায়, ভেক্টরগুলি আরও অনেক বেশি সুবিধাজনক।


11
তারা পয়েন্টার এড়ানোর জন্য ডিজাইন করা হয়নি। সি ++ 11 সংজ্ঞা দেয় () এবং শেষ () ওয়ালারায় যা তাদের কাছে পুনরাবৃত্তির প্রত্যাবর্তন করে
মোহাম্মদ এল-নাকিব

3
@ ব্যবহারকারী2023370: এ কারণেই অনেক ফোর্টরান ব্যবহারকারী ফোর্টরান 77 পছন্দ করেন prefer :)
মাইকেল

152

valarrayএমন এক অনাথ যে ভুল সময়ে ভুল জায়গায় জন্মগ্রহণ করেছিল। এটি অপ্টিমাইজেশনের একটি প্রয়াস, মোটামুটি বিশেষভাবে মেশিনগুলির জন্য যেগুলি ভারী শুল্ক গণিতের জন্য ব্যবহৃত হয়েছিল, যখন এটি লেখা হয়েছিল - বিশেষত, ক্রেসের মতো ভেক্টর প্রসেসর।

একটি ভেক্টর প্রসেসরের জন্য, আপনি সাধারণত যা করতে চেয়েছিলেন তা ছিল একটি সম্পূর্ণ অ্যারেতে একক ক্রিয়াকলাপ প্রয়োগ করা, তারপরে পরবর্তী ক্রিয়াকলাপটি পুরো অ্যারেতে প্রয়োগ করা, এবং যতক্ষণ না আপনি যতটা করার প্রয়োজন তার সমস্ত কাজ না করে।

আপনি যদি মোটামুটি ছোট অ্যারেগুলি ব্যবহার না করেন তবে তবে এটি ক্যাশে নিয়ে খারাপ কাজ করতে ঝোঁক। বেশিরভাগ আধুনিক মেশিনে, আপনি সাধারণত যা পছন্দ করেন (সম্ভাব্য পরিমাণে) অ্যারের অংশটি লোড করা হবে, আপনি যা যা করছেন তার উপর সমস্ত ক্রিয়াকলাপ করুন, তারপরে অ্যারের পরবর্তী অংশে যান।

valarrayঅ্যালাইজিংয়ের কোনও সম্ভাবনাও দূর করার কথা রয়েছে, যা (কমপক্ষে তাত্ত্বিকভাবে) সংকলকটির গতি উন্নত করতে দেয় কারণ এটি রেজিস্টারে মান সংরক্ষণের জন্য আরও বেশি মুক্ত। বাস্তবে, তবে, আমি মোটেও নিশ্চিত নই যে কোনও বাস্তব বাস্তবায়ন এটিকে কোনও গুরুত্বপূর্ণ ডিগ্রীতে নিয়ে যায়। আমার সন্দেহ হয় এটি বরং মুরগির ডিম এবং ডিম ধরণের সমস্যা - সংকলক সমর্থন ব্যতীত এটি জনপ্রিয় হয়ে ওঠে না, এবং যতক্ষণ না এটি জনপ্রিয় না হয়, কেউ সমর্থন করতে তাদের সংকলকটিতে কাজ করার ঝামেলা করতে যাবেনা।

ভ্যালারির সাথে ব্যবহার করার জন্য আনুষাঙ্গিক শ্রেণীর একটি বিভোরডিং (আক্ষরিক) অ্যারেও রয়েছে। আপনি পেতে slice, slice_array, gsliceএবং gslice_arrayএকটি টুকরা সাথে খেলতে valarray, এবং এটি একটি বহু মাত্রিক অ্যারে মত আচরণ করা। আপনি mask_arrayএকটি অপারেশন "মাস্ক" করতেও পাবেন (উদাহরণস্বরূপ x থেকে y এ আইটেম যুক্ত করুন তবে কেবল সেই অবস্থানগুলিতে যেখানে z শূন্য নয়)। তুচ্ছ ব্যবহারের চেয়ে আরও বেশি কিছু করার জন্য valarrayআপনাকে এই আনুষঙ্গিক ক্লাসগুলি সম্পর্কে অনেক কিছু শিখতে হবে, যার মধ্যে বেশ কয়েকটি জটিল এবং এর মধ্যে কোনওটিই খুব ভাল ডকুমেন্টেড বলে মনে হয় না।

নীচের লাইন: যদিও এতে কিছুক্ষণের উজ্জ্বলতা রয়েছে, এবং খুব সুন্দরভাবে কিছু করা যায়, এমন কিছু খুব ভাল কারণও রয়েছে যে এটি (এবং প্রায় অবশ্যই অবিরত থাকবে) অস্পষ্ট।

সম্পাদনা করুন (আট বছর পরে, 2017 সালে): পূর্ববর্তী কিছুগুলি কমপক্ষে কিছুটা ডিগ্রীতে অপ্রচলিত হয়ে পড়েছে। একটি উদাহরণের জন্য, ইন্টেল তাদের সংকলকটির জন্য ভালরয়ের একটি অনুকূলিত সংস্করণ প্রয়োগ করেছে। কর্মক্ষমতা উন্নত করতে এটি ইন্টেল ইন্টিগ্রেটেড পারফরম্যান্স প্রিমিটিভস (ইন্টেল আইপিপি) ব্যবহার করে। যদিও সঠিক পারফরম্যান্সের উন্নতি নিঃসন্দেহে পরিবর্তিত হয়, সাধারণ কোডের সাথে একটি দ্রুত পরীক্ষা "স্ট্যান্ডার্ড" বাস্তবায়নের সাথে সংকলিত অভিন্ন কোডের তুলনায় গতিতে 2: 1 এর উন্নতি ঘিরে দেখায় valarray

সুতরাং, যদিও আমি সম্পূর্ণরূপে নিশ্চিত নই যে সি ++ প্রোগ্রামাররা valarrayবিপুল সংখ্যক ব্যবহার শুরু করবে , সেখানে কমপক্ষে কিছু পরিস্থিতি রয়েছে যাতে এটি গতির উন্নতি করতে পারে।


1
এটি কি ভ্যালারির অভ্যন্তরে স্বেচ্ছাচারিত বস্তুর প্রকারগুলি সংরক্ষণ করার জন্য বিশেষভাবে অনুমোদিত নয়?
user541686

6
@ মেহরদাদ: হ্যাঁ - [সংখ্যার। প্রয়োজনীয়তা] এ বিধিনিষেধের একটি (বরং দীর্ঘ) তালিকা রয়েছে। মাত্র কয়েকটি উদাহরণের জন্য, সমস্ত বিমূর্ত ক্লাস এবং ব্যতিক্রমগুলি নিষিদ্ধ। এটির (যেমন উদাহরণস্বরূপ) অনুলিপি নির্মাণ এবং অ্যাসাইনমেন্টের পরে ডিফল্ট নির্মাণের ক্রমগুলির মধ্যে সমতা প্রয়োজন।
জেরি কফিন

@ জেরি কফিন শীশ এটি ভীতিজনক। আমরা প্রতিশ্রুতি দিচ্ছি যে আমরা এটি ব্যবহার করব না।
হানি গোক

4
আমি ভয়ের ভিত্তিতে সিদ্ধান্ত নেব না। আপনার যে উপাদানগুলিকে নিষিদ্ধ করা হয়েছে এমন বৈশিষ্ট্যগুলি ব্যবহার করতে হবে তা আপনার ভিত্তিতে আমি সিদ্ধান্ত নেব।
জেরি কফিন

3
@ অ্যানয়িং_সকুইড: আপনার যদি আরও নির্দিষ্ট নির্দিষ্ট এবং (যদি আপনি বিশ্বাস করেন) সঠিক তথ্য যুক্ত করতে চান তবে দয়া করে এটির উত্তর দেখিয়ে নির্দ্বিধায় দ্বিধায় থাকবেন। এখনই যেমন দাঁড়িয়েছে, আপনার মন্তব্যটি কোনও কার্যকর তথ্য যুক্ত করেছে বলে মনে হচ্ছে না।
জেরি কফিন

39

সি ++ 98 এর মানককরণের সময়, ভ্যালার্রে ডিজাইন করা হয়েছিল কিছু ধরণের দ্রুত গাণিতিক গণনার অনুমতি দেওয়ার জন্য। যাইহোক, সেই সময়ে টড ভেল্ডহুইজন অভিব্যক্তি টেম্পলেট উদ্ভাবন করেছিল এবং ব্লিট ++ তৈরি করেছিল এবং অনুরূপ টেম্পলেট-মেটা কৌশল উদ্ভাবিত হয়েছিল, যা মানটি প্রকাশের আগেই ভালারিগুলি বেশ অপ্রচলিত করে তুলেছিল। আইআইআরসি, ভ্যালারির মূল প্রস্তাবক (গুলি) মানকতার মধ্যে এটি অর্ধেক রেখে দিয়েছে, (যদি সত্য হয়) এটি কোনওরকম সাহায্যও করেনি।

আইআরটিএস যে মান থেকে এটি সরানো হয়নি তার প্রধান কারণ হ'ল কেউই সমস্যাটি পুরোপুরি মূল্যায়ন করতে এবং এটি অপসারণের জন্য কোনও প্রস্তাব লিখতে সময় নেয়নি।

যাইহোক, মনে রাখবেন যে এই সমস্ত অস্পষ্টভাবে শ্রবণশক্তি স্মরণ করা হয়। এটি একটি নুনের দানার সাথে নিন এবং আশা করুন যে কেউ এটি সংশোধন করে বা নিশ্চিত করেছে।


অভিব্যক্তি টেমপ্লেটগুলি ভান্দেভোরদেও সমানভাবে জমা দেওয়া যায়, তাই না?
নিকোস অথানাসিউ

@ নিকোস: আমি জানি না। যদিও আমি ভুল হতে পারি। আপনার এই পাঠের পক্ষে কী আছে?
sbi 20

1
এটি "সি ++ টেমপ্লেটস - সম্পূর্ণ গাইড" বইয়ে উল্লেখ করা হয়েছে, আমি মনে করি এটি সাধারণত গৃহীত হয় যে তারা উভয়ই স্বতন্ত্রভাবে আবিষ্কার করেছিলেন ।
নিকোস অথানাসিউ

27

আমি জানি যে ভ্যালারিতে কিছু সিনট্যাকটিক চিনি রয়েছে

আমার বলতে হবে যে std::valarraysসিনথেটিক চিনির ক্ষেত্রে আমার খুব বেশি কিছু আছে বলে আমি মনে করি না । বাক্য গঠনটি ভিন্ন, তবে আমি এই পার্থক্যটিকে "চিনি" বলব না। এপিআই অদ্ভুত। বিভাগে std::valarrayমধ্যে গুলি সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজ এই অস্বাভাবিক API ও সত্য যে, যেহেতু উল্লেখ std::valarrayগুলি অত্যন্ত অপ্টিমাইজ করা আশা করা যায়, কোনো ত্রুটি বার্তা আপনি তাদের ব্যবহার সম্ভবত অ স্বজ্ঞাত হতে হবে যখন পান।

কৌতূহলের বাইরে, প্রায় এক বছর আগে আমি এর std::valarrayবিরুদ্ধে দাঁড়ালাম std::vector। আমার কাছে এখন আর কোড বা সুনির্দিষ্ট ফলাফল নেই (যদিও এটি আপনার নিজের লেখা শক্ত হওয়া উচিত নয়)। জিসিসি আমি ব্যবহার করেনি যখন ব্যবহার করে একটি সামান্য কর্মক্ষমতা বেনিফিট পেতে std::valarrayসহজ গাণিতিক জন্য, কিন্তু আমার বাস্তবায়নের স্ট্যানডার্ড ডেভিয়েশন গণনা করার জন্য (এবং, অবশ্যই, স্ট্যানডার্ড ডেভিয়েশন যে জটিল না, যতটা গণিত যায়)। আমি সন্দেহ করি যে বড় আইটেমের প্রতিটি আইটেমে std::vectorঅপারেশনগুলি std::valarrayএস এর ক্রিয়াকলাপের চেয়ে ক্যাশে আরও ভাল হয় । ( দ্রষ্টব্য , ম্যাসিফিলের পরামর্শ অনুসরণ করে , আমি vectorএবং থেকে প্রায় অভিন্ন পারফরম্যান্স পেতে সক্ষম হয়েছি valarray)।

শেষ পর্যন্ত, std::vectorমেমরি বরাদ্দ এবং অস্থায়ী অবজেক্ট তৈরির মতো জিনিসের দিকে গভীর মনোযোগ দেওয়ার সময় আমি ব্যবহার করার সিদ্ধান্ত নিয়েছিলাম ।


উভয় std::vectorএবং std::valarrayএকটি সংকীর্ণ ব্লক তথ্য সংরক্ষণ করুন। যাইহোক, তারা বিভিন্ন নিদর্শন ব্যবহার করে সেই ডেটা অ্যাক্সেস করে এবং আরও গুরুত্বপূর্ণ, API এর জন্য API এর std::valarrayচেয়ে আলাদা অ্যাক্সেস নিদর্শনগুলিকে উত্সাহ দেয় std::vector

স্ট্যান্ডার্ড বিচ্যুতি উদাহরণের জন্য, একটি নির্দিষ্ট ধাপে আমাকে সংগ্রহের গড় এবং প্রতিটি উপাদানটির মান এবং গড়ের মধ্যে পার্থক্য খুঁজে পাওয়া দরকার।

এর জন্য std::valarray, আমি এরকম কিছু করেছি:

std::valarray<double> original_values = ... // obviously I put something here
double mean = original_values.sum() / original_values.size();
std::valarray<double> temp(mean, original_values.size());
std::valarray<double> differences_from_mean = original_values - temp;

আমি std::sliceবা আরও চালাক হতে পারে std::gslice। এখন পাঁচ বছর পেরিয়ে গেছে।

কারণ std::vector, আমি এর লাইনে কিছু করেছি:

std::vector<double> original_values = ... // obviously, I put something here
double mean = std::accumulate(original_values.begin(), original_values.end(), 0.0) / original_values.size();

std::vector<double> differences_from_mean;
differences_from_mean.reserve(original_values.size());
std::transform(original_values.begin(), original_values.end(), std::back_inserter(differences_from_mean), std::bind1st(std::minus<double>(), mean));

আজ আমি অবশ্যই অন্যভাবে লিখতে হবে। আর কিছু না হলে আমি সি ++ 11 ল্যাম্বডাসের সুবিধা নেব।

এটা স্পষ্ট যে কোডের এই দুটি স্নিপেট বিভিন্ন জিনিস করে things উদাহরণস্বরূপ, std::vectorউদাহরণটি মধ্যবর্তী মধ্যবর্তী সংগ্রহ তৈরি করে std::valarrayনা। যাইহোক, আমি কারণ পার্থক্য মধ্যে পার্থক্য বাঁধা সেগুলিকে তুলনা করতে এটা ন্যায্য মনে std::vectorএবং std::valarray

আমি যখন এই উত্তরটি লিখেছিলাম তখন আমার সন্দেহ হয়েছিল যে দুটি std::valarrayসের ( std::valarrayউদাহরণের শেষ লাইন ) থেকে উপাদানগুলির মান বিয়োগ করা উদাহরণের সাথে সম্পর্কিত লাইনটির চেয়ে কম ক্যাশে-বান্ধব std::vectorহবে (যা শেষ লাইনেও ঘটে)।

এটি দেখা যাচ্ছে, যে,

std::valarray<double> original_values = ... // obviously I put something here
double mean = original_values.sum() / original_values.size();
std::valarray<double> differences_from_mean = original_values - mean;

std::vectorউদাহরণ হিসাবে একই জিনিস , এবং প্রায় একই কর্মক্ষমতা আছে। শেষ পর্যন্ত, প্রশ্নটি হল আপনি কোন API পছন্দ করেন।


ক-এর std::vectorচেয়ে ক্যাশে আরও ভাল খেলতে হবে এমন কোনও কারণ আমি ভাবতে পারি না std::valarray; তারা উভয়ই তাদের উপাদানগুলির জন্য মেমরির একক সংলগ্ন ব্লক বরাদ্দ করে।
মুসফিল

1
@ মুসিফিল আমার প্রতিক্রিয়া মন্তব্যটির জন্য অনেক দীর্ঘ হয়েছে, তাই আমি উত্তর আপডেট করেছি।
ম্যাক্স ল্যাববার্ট

1
valarrayউপরের আপনার উদাহরণের জন্য , আপনাকে কোনও temp valarrayঅবজেক্ট তৈরি করতে হবে না , তবে আপনি সবেমাত্র এটি করতে পারতেন std::valarray<double> differences_from_mean = original_values - mean;এবং তারপরে ক্যাশের আচরণটি vectorউদাহরণের মতো হওয়া উচিত । (যাইহোক, যদি meanসত্যিই intনা হয় তবে doubleআপনার প্রয়োজন হতে পারে static_cast<double>(mean)))
ম্যাসিফিল

পরিষ্কার করার পরামর্শের জন্য ধন্যবাদ valarray। এটি দেখতে পারফরম্যান্সের উন্নতি করে কিনা। হিসাবে meanহচ্ছে int: যে ছিল একটি ভুল। আমি মূলত ints ব্যবহার করে উদাহরণটি লিখেছিলাম এবং তখন বুঝতে পেরেছিলাম যে meanকাটা কাটার কারণে প্রকৃত গড় থেকে খুব দূরে থাকবে। তবে আমি আমার প্রথম দফায় সম্পাদনায় কয়েকটি প্রয়োজনীয় পরিবর্তন মিস করেছি।
ম্যাক্স ল্যাববার্ট

@ মুসিফিল আপনি ঠিক বলেছেন; এই পরিবর্তনটি নমুনা কোডটি প্রায় অভিন্ন কার্য সম্পাদনে নিয়ে আসে।
ম্যাক্স ল্যাবার্ট

23

ভ্যালার্রিকে কিছু ফোরট্রান ভেক্টর-প্রসেসিংয়ের ধার্মিকতা সি ++ ছাড়িয়ে দেওয়ার কথা ছিল। কোনওভাবে প্রয়োজনীয় সংকলক সমর্থন সত্যই কখনও ঘটেনি।

জোসুটিস বইগুলিতে ভাল্যারে ( এখানে এবং এখানে ) কিছু আকর্ষণীয় (কিছুটা অস্বস্তিকর) মন্তব্য রয়েছে ) ।

যাইহোক, ইন্টেল তাদের সাম্প্রতিক সংকলক রিলিজগুলিতে ভালারে পুনর্বিবেচনা করছে বলে মনে হচ্ছে (উদাহরণস্বরূপ স্লাইড 9 দেখুন ); এটি একটি আকর্ষণীয় বিকাশ যা তাদের 4-ওয়ে সিমড এসএসই নির্দেশিকা সেটটি 8-ওয়ে এভিএক্স এবং 16-ওয়ে লারাবির নির্দেশাবলীর সাথে যুক্ত হতে চলেছে এবং বহনযোগ্যতার স্বার্থে এটি সম্ভবত একটি বিমূর্ততার সাথে কোড করা আরও ভাল'll অন্তর্ভুক্তি (বলুন) তুলনায় valarray।


16

আমি ভ্যালারির জন্য একটি ভাল ব্যবহার পেয়েছি। এটি নালাপী অ্যারেগুলির মতো ভ্যালারি ব্যবহার করা।

auto x = linspace(0, 2 * 3.14, 100);
plot(x, sin(x) + sin(3.f * x) / 3.f + sin(5.f * x) / 5.f);

এখানে চিত্র বর্ণনা লিখুন

আমরা ওয়ালারি দিয়ে উপরে প্রয়োগ করতে পারি।

valarray<float> linspace(float start, float stop, int size)
{
    valarray<float> v(size);
    for(int i=0; i<size; i++) v[i] = start + i * (stop-start)/size;
    return v;
}

std::valarray<float> arange(float start, float step, float stop)
{
    int size = (stop - start) / step;
    valarray<float> v(size);
    for(int i=0; i<size; i++) v[i] = start + step * i;
    return v;
}

string psstm(string command)
{//return system call output as string
    string s;
    char tmp[1000];
    FILE* f = popen(command.c_str(), "r");
    while(fgets(tmp, sizeof(tmp), f)) s += tmp;
    pclose(f);
    return s;
}

string plot(const valarray<float>& x, const valarray<float>& y)
{
    int sz = x.size();
    assert(sz == y.size());
    int bytes = sz * sizeof(float) * 2;
    const char* name = "plot1";
    int shm_fd = shm_open(name, O_CREAT | O_RDWR, 0666);
    ftruncate(shm_fd, bytes);
    float* ptr = (float*)mmap(0, bytes, PROT_WRITE, MAP_SHARED, shm_fd, 0);
    for(int i=0; i<sz; i++) {
        *ptr++ = x[i];
        *ptr++ = y[i];
    }

    string command = "python plot.py ";
    string s = psstm(command + to_string(sz));
    shm_unlink(name);
    return s;
}

এছাড়াও, আমাদের পাইথন লিপি দরকার।

import sys, posix_ipc, os, struct
import matplotlib.pyplot as plt

sz = int(sys.argv[1])
f = posix_ipc.SharedMemory("plot1")
x = [0] * sz
y = [0] * sz
for i in range(sz):
    x[i], y[i] = struct.unpack('ff', os.read(f.fd, 8))
os.close(f.fd)
plt.plot(x, y)
plt.show()

2
আমি যখন কাজের জায়গায় আজ ভ্যালারি সম্পর্কে জানতে পেরেছিলাম তখন আমি আক্ষরিকভাবে আপনার মতো একই চিন্তাভাবনা করেছি। আমি মনে করি এখন থেকে সি ++ তে গণিত প্রক্রিয়াকরণের সমস্যার জন্য কোডটি গণিতের দৃষ্টিকোণ থেকে স্ট্যান্ড করার পক্ষে কোডটি সহজতর বলে দেখায় আমি ভ্যালারি ব্যবহার করব।
জাচারি ক্রাউস

8

সি ++ 11 স্ট্যান্ডার্ড বলেছেন:

ভ্যালারি অ্যারে ক্লাসগুলি নির্দিষ্ট ধরণের এলিয়জিং থেকে মুক্ত বলে সংজ্ঞায়িত করা হয়, এইভাবে এই শ্রেণীর ক্রিয়াকলাপগুলি অনুকূলিত করা যায়।

সি ++ 11 26.6.1-2 দেখুন।


যেহেতু আমি ধরে নিই যে স্ট্যান্ডার্ডটি কোন রূপগুলি সংজ্ঞায়িত করে, আপনি সেগুলি উদ্ধৃত করতে পারেন? এছাড়াও, এগুলি কোডিং ট্রিকস ব্যবহার করে প্রয়োগ করা হয়েছে, না তারা ভাষাতে অন্য কোথাও নিয়ম কানুনের ক্ষেত্রে সংকলক ভিত্তিক ব্যতিক্রমগুলি রয়েছে?
আন্ডারস্কোর_

2

সঙ্গে std::valarrayতোমার মত মান গাণিতিক নোটেশন ব্যবহার করতে পারেন v1 = a*v2 + v3বাক্সের বাইরে। আপনি নিজের অপারেটরগুলি সংজ্ঞায়িত না করলে ভেক্টরগুলির সাথে এটি সম্ভব নয়।


0

স্টাড :: ভ্যালারি হ'ল ভারী সংখ্যাসূচক কাজগুলির জন্য যেমন কম্পিউটারের ফ্লুয়েড ডায়নামিকস বা কম্পিউটেশনাল স্ট্রাকচার ডায়নামিক্স, যার মধ্যে আপনার কয়েক মিলিয়ন, কখনও কখনও কয়েক মিলিয়ন মিলিয়ন আইটেম রয়েছে, এবং আপনি লক্ষ লক্ষ বারবারের সাথে একটি লুপে পুনরাবৃত্তি করেন। হতে পারে আজ স্ট্যান্ড :: ভেক্টরের তুলনামূলক পারফরম্যান্স রয়েছে তবে, প্রায় 15 বছর আগে, আপনি যদি কোনও দক্ষ সংখ্যার সলভার লিখতে চান তবে ভ্যালার্রে প্রায় বাধ্যতামূলক ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.