سؤال

قضاء الوقت على مستوى عال لغات فجأة خطر لي أنني لا أعرف الفرق بين مجموعة شار و سلسلة.أعتقد أنهم نفس الشيء ولكن لست متأكدا.هل هناك فرق ؟ هل هو مجرد مجموعة شار مع بعض مجردة ؟

هل كانت مفيدة؟

المحلول

صفيف الأحرف هو ببساطة مجموعة من الشخصيات

السلسلة هي بنية البيانات التي تستخدم مجموعة من الأحرف

تستخدم بعض تمثيلات السلسلة أحد الأطراف الفارغة (مثل C) ، والبعض الآخر يستخدم بادئة الطول

نصائح أخرى

سلسلة هو تجريد ، ولكن من أ تسلسل من الشخصيات. لا تقول شيئًا عن التنفيذ. إذا كنت ترغب في إنشاء تطبيق سلسلة بناءً على قائمة مرتبطة بالأحرف ، فلا يوجد شيء يمنعك.

في لغة مثل C ، هناك اختلاف ضئيل للغاية - فقط أن سلسلة AC هي سلسلة من الأحرف المُغلقة الفارغة في عناوين متسلسلة ، والتي يتم الوصول إليها بشكل عام من خلال مؤشر.

في لغة OOP ، ستكون السلسلة كائنًا لبعض فئة السلسلة. من المحتمل أن يحتفظ هذا بالبيانات في صفيف الأحرف داخليًا ، لكنك لا تحتاج إلى معرفة ذلك. لا يمكن أن تكون صفيف الأحرف سوى صفيفًا بسيطًا ، ولكن يمكن لفئة السلسلة أن توفر العديد من العمليات (الفرعية ، regex ، إلخ) على الأوتار إذا قرر المنفذ ذلك.

كنت ادرس البرمجة, و هذا هو كيف تستخدم لشرح هذه المسألة بالذات.

أولا التركيز على ما كل الأشياء مشترك:كل مجموعة شار و سلسلة تتكون من سلسلة من الأحرف.كونه تسلسل يعني أن الشخصيات هي أمر يمكن تعدادها على سبيل المثال.

الآن التركيز على كل ما من شيئين إضافة ، خاصة بهم مختلفة الطرق إلى هذه الأرضية المشتركة.

A شار مجموعة يضيف أي مجموعة من المعروف أن إضافة:الفهرسة و الوصول العشوائي إلى العناصر الفردية.

A سلسلة, من ناحية أخرى, يضيف حقيقة أن تسلسل حرف يعتبر كل شيء مع الخصائص الخاصة بها.في بعض التطبيقات ، تحقيق هذا يعني تغيير طريقة حرف يتم تخزين (إضافة إنهاء null في ج السلاسل ، على سبيل المثال).

هذا النهج (انظر القواسم المشتركة, ثم كيف أن الأشياء تختلف من لهم) وقد ثبت مفيدة في مجموعة متنوعة من الحالات.

ويساعد هذا الأمل.

في C ، تكون هذه هي نفسها تقريبًا ، على الرغم من أن السلسلة سيكون لها حرف فارغ إضافي في النهاية.

في لغات أخرى (Java ، c# etc) ، فإن السلسلة هي كائن ، في حين أن صفيف الأحرف عبارة عن مجموعة من ... chars (وهي أنواع البيانات البدائية).

عادة ، يتم تنفيذ السلاسل مع صفائف الأحرف.

الجواب إلى حد ما يعتمد على اللغة التي تتحدث عنها. في السلاسل العالمية .NET/C# هي كائنات غير قابلة للتغيير ، في حين أن صفيف char يمكنك إضافة/تغيير القيم بسهولة في الصفيف. يمكن التعامل مع الأوتار على أنها صفائف char بطريقة للقراءة فقط ، حيث يمكنك التكرار على الشخصيات في سلسلة.

في الخلاصة ، أعتقد أن الفرق الأكبر هو في الطريقة التي تريد العمل بها. هل ترغب في العمل مع جزء كبير من النص ، على سبيل المثال إظهار رسالة إلى مستخدم نهائي ، أم أنك تبحث في سلسلة من الأحرف ، مما يؤدي إلى بعض المعالجة في القائمة؟ كل شيء شخصي إلى حد ما على مستوى معين.

String هو class في جافا. لذلك لديها سمات على سبيل المثال length. لذلك عندما تسأل عن حجم السلسلة ، فإنه يعيد ببساطة ذلك بدلاً من حساب القيمة في كل مرة. كما أنه طرق أخرى على سبيل المثال indexOf, substring, وما إلى ذلك لجعل الحياة سهلة حتى لا تضطر إلى القيام بذلك بنفسك.

يتم تمثيل السلسلة على غرار C داخليًا بواسطة مجموعة من الأحرف مع " 0" في النهاية ، مما يدل على نهاية السلسلة.

في C ++ ، هناك فئة حاوية سلسلة محددة في String.H والتي توفر بعض عمليات السلسلة النموذجية لمعالجة السلسلة.

ذلك يعتمد على اللغة. بلغات C-ish ، فهي مخللة إلى حد كبير. يمكنك المطالبة بالفرق هو أن "الأوتار" لها نولًا ضمنيًا ، لكن ذلك سيكون تقسيم الشعر.

فورتران هو الطرف الآخر. هناك صفائف أحرف وسلاسل الأحرف هي أنواع مختلفة تمامًا ، مع وجود عمليات مختلفة متاحة لهم.

السلسلة هي مجموعة الأحرف التي تم إنهاءها بواسطة حرف فارغ " 0"

في C ، السلسلة عبارة عن مجموعة من الأحرف التي تم إنهاءها بواسطة حرف فارغ ( 0) ولكن

في C ++ ، تكون السلسلة فئة ونستخدم كائنها ولا يوجد حرف فارغ في النهاية ولكن مجموعة من الأحرف تحتوي على حرف فارغ في النهاية.

أيضًا ، يمكننا استخدام المشغلين مع كائن السلسلة في C ++.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top