Харитани қисқартириш бу катта ҳажмдаги маълумотларни фойдали умумлаштирилган натижаларга тўплаш учун маълумотларни қайта ишлаш парадигмаси
Download 80.3 Kb.
|
Харитани қисқартириш
- Bu sahifa navigatsiya:
- QtConcurrent::mappedReduced()
QList QFuture static_cast // Create a set of the lengths of all strings in a list. QStringList strings = ...; QFuture qOverload qOverload dan foydalanishga e'tibor bering . Bir nechta ortiqcha yuklarga ega bo'lgan usullar uchun noaniqlikni hal qilish kerak. Shuni ham yodda tutingki, QtConcurrent::mappedReduced() dan foydalanganda siz oddiy va a'zo funktsiyalardan foydalanishni erkin aralashtirishingiz mumkin: // Oddiy funktsiyalar va a'zo funktsiyalarni QtConcurrent::mappedReduced() bilan aralashtirishi mumkin. extern void computeAverage(int &average, int length); QStringList strings = ...; QFuture // Ro'yxatdagi barcha tasvirlarning rang taqsimoti to'plamini yarating.. extern int colorDistribution(const QImage &string); QList QFuture qOverload Funktsiya obyektlaridan foydalanish quyidagicha amalga oshiriladi: QtConcurrent::map(), QtConcurrent::mapped() va QtConcurrent::mappedReduced() xarita funksiyasi uchun funksiya obyektlarini qabul qiladi. Ushbu funktsiya obyektlari funktsiya chaqiruviga holat qo'shish uchun ishlatilishi mumkin: struct Scaled{ Scaled(int size) : m_size(size) { } typedef QImage result_type; QImage operator()(const QImage &image){ return image.scaled(m_size, m_size); } int m_size; }; QList QFuture Funktsiya obyektlari kamaytirish funktsiyasi uchun ham qo'llab-quvvatlanadi: struct ImageTransform{ void operator()(QImage &result, const QImage &value); }; QFuture QtConcurrent::mappedReduced(images, Scaled(100), ImageTransform(), QtConcurrent::SequentialReduce); Lambda ifodalaridan foydalanish quyidagicha amalga oshiriladi: QtConcurrent::map(), QtConcurrent::mapped() va QtConcurrent::mappedReduced() xarita uchun lambda ifodalarini qabul qiladi va funksiyani qisqartiradi: QList QtConcurrent::blockingMap(vector, [](int &x) { x *= 2; }); int size = 100; QList QList [&size](const QImage &image) { return image.scaled(size, size); } ).results(); QtConcurrent::mappedReduced() yoki QtConcurrent::blockingMappedReduced() dan foydalanganda siz oddiy funksiyalardan, a’zo funksiyalardan va lambda ifodalaridan foydalanishni erkin aralashtirishingiz mumkin. QList [&size](const QImage &image) { return image.scaled(size, size); }, addToCollage ).results(); Bir nechta argumentlarni o'z ichiga olgan o'rash funktsiyalari quyidagicha amalaga oshiriladi: Agar siz bir nechta argumentni oladigan xarita funksiyasidan foydalanmoqchi bo'lsangiz, lambda funksiyasidan foydalanishingiz yoki std::bind()uni bitta argumentni oladigan funktsiyaga aylantirishingiz mumkin. Misol sifatida biz QImage::scaledToWidth() dan foydalaniladi: QImage QImage :: scaledToWidth ( int width , Qt :: TransformationMode ) const ; scaledToWidth uchta argumentni oladi (shu jumladan "bu" ko'rsatgich) va to'g'ridan-to'g'ri QtConcurrent::mapped() bilan ishlatib bo'lmaydi, chunki QtConcurrent::mapped() bitta argumentni oladigan funktsiyani kutadi. QImage::scaledToWidth() ni QtConcurrent::mapped() bilan ishlatish uchun biz kenglik va transformatsiya rejimi uchun qiymat berishimiz kerak : QList std::function return img.scaledToWidth(100, Qt::SmoothTransformation);}; QFuture Download 80.3 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling