در C# یک برنامه بنویسید که یک Dictionary بسازد که کلیدها شناسه‌های پردازش و مقدارها زمان اجرای هر پردازش (ثانیه) باشند و با دریافت یک آستانه، همهٔ پردازش‌هایی که زمان اجرا کمتر از آستانه هستند را با استفاده از Dictionary.Remove حذف کند.

16.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 02:40

0.0

برای حل مسئله از زبان C# و فضای نام System.Collections.Generic استفاده کنید؛ یک Dictionary پر کنید، سپس برای حذف آیتم‌ها از Dictionary.Remove(key) بهره ببرید. توجه داشته باشید که هنگام پیمایش دیکشنری نباید مستقیماً آن را تغییر دهید؛ بهتر است ابتدا کلیدهای مورد نظر برای حذف را با استفاده از LINQ یا یک لیست موقتی (مثلاً dict.Where(kv => kv.Value < threshold).Select(kv => kv.Key).ToList()) جمع‌آوری کرده و بعد در یک حلقه foreach روی آن لیست موقتی، برای هر کلید dict.Remove(key) را فراخوانی کنید.

توسط پژوهشگر در 198 روز قبل ساعت 02:40
دسته بندی ها: C# C# for beginner
arman در 198 روز قبل ساعت 02:41

بهتر است فضای نام System.Collections.Generic را وارد کنید و هنگام حذف آیتم‌ها از دیکشنری هرگز مستقیماً روی آن پیمایش نکنید؛ ابتدا کلیدهای حذف‌شونده را با LINQ مثل dict.Where(kv => kv.Value < threshold).Select(kv => kv.Key).ToList() در یک لیست موقت جمع‌آوری کنید. سپس در یک حلقه foreach روی آن لیست از dict.Remove(key) استفاده کنید که هر فراخوانی به‌طور متوسط O(1) است و نتیجهٔ حذف را به‌صورت بولین برمی‌گرداند. اگر برنامه‌تان چندریسمانی است از ConcurrentDictionary یا قفل‌گذاری استفاده کنید تا شرایط رقابتی پیش نیاید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری