سؤال
أنا أستخدم QT 4.5 وأعمل مع أ QList<QStringList>
وهي قائمة قائمة السلسلة.
الآن أريد استبدال سلسلة واحدة داخل قائمة سلسلة واحدة ولكن يبدو من غير المعتاد الكتابة. لقد وجدت الطريقة التالية للقيام بذلك وكنت أتساءل عما إذا كان الأمر على ما يرام:
QList <QStringList> pDataList;
pDataList[listIndex].replace(QStringIndex, newString);
الآن ، لست قلقًا بشأن بناء الجملة ، لكني أريد أن أعرف إذا pDataList
مؤشراتها مجاورة في الذاكرة بحيث لا بأس في الاستخدام []
. هل هناك طريقة أخرى للقيام بذلك؟
المحلول
قضية pDataList
إن العناصر المجاورة في الذاكرة لا تتعلق بسؤال ما إذا كان من الجيد الاستخدام operator[]
.
على العموم، QList<>
لا تضمن أن عناصرها مجاورة في الذاكرة ، ولكنها لا تحمل الزائد operator[]
لإعطائك العنصر الذي تبحث عنه رغم ذلك.
الشيء الوحيد الذي يجب أن تقلقه عند القيام بشيء كهذا هو التأكد من ذلك (pDataList.size() < listIndex)
. خلاف ذلك ، ستقوم بفهرسة عناصر ليس في القائمة ، مما يؤدي إلى استثناء في تصحيح الأخطاء أو السلوك غير المحدد في الإصدار.