נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: איך ממינים רשימה בSTL

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
rosberry
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 14 August 2006
משתמש: מנותק/ת
הודעות: 12
נשלח בתאריך: 14 August 2006 בשעה 12:38 | IP רשוּם
ציטוט rosberry

שלום

אני סטודנטית שנה ראשונה במחשבים אני מנסה לבנות רשימה בעזרת STL אני עובדת בC++

הרשימה מורכבת מCLASS  שמכיל שמות של מתקנים מיקומם וכו

רציתי לדעת האם יש אופצייה למיין את הרשימה הזו לפי שם המתקן הוא מורכב מSTRING 

וכיצד אני יכולה לשנות את המיון של הרשימה הזו לפי הצרכים שלי (פעם למיין לפי שם פעם לפי קוד וכו)

האם יש דרך לעשות זאת או שאני צריכה לממש את זה בלי STL

ניסתי לעבוד בעזרת SORT אבל אני לא מבינה איך כותבים את operator < בשביל הרשימה.

תודה רבה מראש

 

חזרה לתחילת העמוד הצג את כרטיס החבר של rosberry חפש הודעות אחרות של rosberry
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 14 August 2006 בשעה 13:06 | IP רשוּם
ציטוט אלצ'קו

לא ממש הבנתי מה את עושה. הגדרת מחלקה משלך, נגיד cls, ואז יצרת רשימה, נגיד list<cls>mylist, ועכשיו את רוצה למיין אותה בעזרת sort?

המממ. no can do. הפונקציה sort לא תמיין לך רשימות, כמו שכתוב כאן:

The sort algorithm is an operation (function) that can be applied to many STL containers (with the notable exception of the list container).

אולי תנסי vector במקום.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
rosberry
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 14 August 2006
משתמש: מנותק/ת
הודעות: 12
נשלח בתאריך: 14 August 2006 בשעה 13:21 | IP רשוּם
ציטוט rosberry

 לא נראה לי שווקטור מתאים בעקרון אני צריכה לבנות רשימה של CLASS מסוג MAIL

  unsigned int destAddrees[32];
  unsigned int sourceAddrees[32];
  double kg;
  double price;
  Date arrival_time;
  Date sent_time;
  bool express;
  bool collect;
  bool replay;
  bool anotherContinent;
  bool anotherCountry;

string name;

אלה המשתנים שישי לי שם ואני רוצה את הרשימה להחזיק ממויינת לפי  name או לפי sourceAddrees השאלה שלי היא איך אפשר לישם את זה ?????? כמובן שאני רוצה להיות גם מסוגלת לשלוף מהרשימה את שאר הנתונים.

בקיצור איך אני יכולה לעשות את זה???

חזרה לתחילת העמוד הצג את כרטיס החבר של rosberry חפש הודעות אחרות של rosberry
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 14 August 2006 בשעה 13:42 | IP רשוּם
ציטוט אלצ'קו

ולמה נראה לך ש-vector לא מתאים כאן?

הדרך הנכונה לעשות את מה שאת רוצה היא להשתמש ב-vector, וליצור מחלקה נוספת שתשמש למיון. קראי כאן על sort.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
rosberry
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 14 August 2006
משתמש: מנותק/ת
הודעות: 12
נשלח בתאריך: 14 August 2006 בשעה 13:52 | IP רשוּם
ציטוט rosberry

תודה רבה אני מקווה שמכאן אני הסתדר לבד
חזרה לתחילת העמוד הצג את כרטיס החבר של rosberry חפש הודעות אחרות של rosberry
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 August 2006 בשעה 14:33 | IP רשוּם
ציטוט אורח

VECTOR ממיין רק מספרים לא?
אפילו אם עושים לו <string> ?

חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 14 August 2006 בשעה 15:18 | IP רשוּם
ציטוט אלצ'קו

vector לא ממיין כלום. הפונקציה sort ממיינת, והקריטריון ע"פיו היא ממיינת נקבע ע"י המתכנת. קשה לרפרף על הלינק שהבאתי לה למעלה?
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 August 2006 בשעה 23:40 | IP רשוּם
ציטוט אורח

אוקי
אז אם אני מגדיר VECTOR ככה:
קוד:
vector<string> vec;

ומנסה לעשות :
קוד:
sort(vec.begin(),vec.end());

SORT

למה אני לא מצליח?
ואיך הקוד אמור להראות בשביל שהוא יצליח
למיין וקטור של STRINGS?
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 15 August 2006 בשעה 00:05 | IP רשוּם
ציטוט אלצ'קו

אתה "לא מצליח"? מעניין. למה אתה מתכוון בזה?

אתה מקבל הודעה שגיאה בקימפול?
אם כן, אתה מבין מה היא אומרת?
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
סליחה על מקודם
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 August 2006 בשעה 00:28 | IP רשוּם
ציטוט סליחה על מקודם

קוד:

using namespace std;

int main()
{
        vector<string> vec;
    vec.push_back("da");
    vec.push_back("ab");
    vec.push_back("ca");
    sort(vec.begin(),vec.end());
    cout << endl << "Sorted.." << endl << endl;
    return 0;
}

זה מביא לי את הERROR הבא (יש לציין שאני משתמש ב VC++6)
קוד:
Compiling...
StdAfx.cpp
Compiling...
Testz.cpp
C:\Documents and Settings\Nab\ùåìçï äòáåãä\Testz\Testz.cpp(17) : warning C4786:   'std::reverse_iterator<std::basic_string<char,std::cha r_traits<char>,std::allocator<char>   > const   *,std::basic_string<char,std::char_traits<char>,std ::allocator<char> >,
std::basic_string<char,std::char_traits<char>,std:: allocator<char> > const &, std::basic_string<char,std::char_traits<char>,std:: allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
C:\Documents and Settings\Nab\ùåìçï äòáåãä\Testz\Testz.cpp(17) : warning C4786:   'std::reverse_iterator<std::basic_string<char,std::cha r_traits<char>,std::allocator<char>   >   *,std::basic_string<char,std::char_traits<char>,std ::allocator<char> >,std::b
asic_string<char,std::char_traits<char>,std::alloca tor<char> > &, std::basic_string<char,std::char_traits<char>,std:: allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
d:\program files\microsoft visual studio\vc98\include\algorithm(583) : error C2784: 'bool __cdecl std::operator <(const class std::vector<_Ty,_A> &,const class std::vector<_Ty,_A> &)' : could not deduce template argument for 'const class std::vector
<_Ty,_A> &' from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
        d:\program files\microsoft visual studio\vc98\include\algorithm(548) : see reference to function template instantiation 'void __cdecl std::_Unguarded_insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char
> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)' being compiled
d:\program files\microsoft visual studio\vc98\include\algorithm(583) : error C2784: 'bool __cdecl std::operator <(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce te
mplate argument for 'const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
        d:\program files\microsoft visual studio\vc98\include\algorithm(548) : see reference to function template instantiation 'void __cdecl std::_Unguarded_insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char
> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)' being compiled
d:\program files\microsoft visual studio\vc98\include\algorithm(583) : error C2784: 'bool __cdecl std::operator <(const struct std::pair<_T1,_T2> &,const struct std::pair<_T1,_T2> &)' : could not deduce template argument for 'const struct std::pair<
_T1,_T2> &' from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
        d:\program files\microsoft visual studio\vc98\include\algorithm(548) : see reference to function template instantiation 'void __cdecl std::_Unguarded_insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char
> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)' being compiled
d:\program files\microsoft visual studio\vc98\include\algorithm(583) : error C2676: binary '<' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' does not define this operator or a conversion to a type accept
able to the predefined operator
        d:\program files\microsoft visual studio\vc98\include\algorithm(548) : see reference to function template instantiation 'void __cdecl std::_Unguarded_insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char
> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)' being compiled
Error executing cl.exe.

Testz.exe - 4 error(s), 2 warning(s)
חזרה לתחילת העמוד הצג את כרטיס החבר של סליחה על מקודם חפש הודעות אחרות של סליחה על מקודם בקר בדף הבית של סליחה על מקודם
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 August 2006 בשעה 00:29 | IP רשוּם
ציטוט אורח

נ.ב אלה הספריות:
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
שיש בהתחלה.. שכחתי להוסיף ואין לי עריכה!! מאוד מצטער על הבלאגן
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 15 August 2006 בשעה 00:47 | IP רשוּם
ציטוט אלצ'קו

אצלי הקוד הזה פועל אצלי מצויין.

קודם כל, מהאזהרות על האורך תתעלם. (אתה יכול גם להוסיף pragma שתבטל אותן וזהו).

עכשיו, אתה שם לב שחסר לך אינקלוד ל-<string>?
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 August 2006 בשעה 02:05 | IP רשוּם
ציטוט אורח

עשיתי cstring
זה לא אותו דבר?
אמרו לי שאם יורשים מC אז שמים C לפני..
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 August 2006 בשעה 02:11 | IP רשוּם
ציטוט אורח

אוקי בקשר לאזהרות על ה"אורך" כפי שאמרת, ממה הם נובעות ואיך אפשר להיפטר מהן?
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 15 August 2006 בשעה 03:12 | IP רשוּם
ציטוט אלצ'קו

אבל אתה לא רוצה את הפונקציות של C. אתה רוצה את המחלקות של CPP.
כדי לבטל את האזהרה של האורך שים
קוד:
#pragma warning (disable: 4786)

וכדאי שתירשם.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 August 2006 בשעה 12:44 | IP רשוּם
ציטוט אורח

cstring זה לא כמו string?
<string>
<cstring>?!?!?!
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 15 August 2006 בשעה 12:57 | IP רשוּם
ציטוט אלצ'קו

לא. זה לא אותו דבר. אלה הם שני קבצי כותר שאין ביניהם שום קשר, מלבד הדימיון בשם. <cstring> הוא הגרסה ה-CPP-ית ל-<string.h> של הספריה הסטנדרטית של C, בעוד ש-<string> הוא קובץ כותר של הספריה הסטנדרטית של CPP.

המחלקה string מוגזרת ב-<string>, ורק שם. ב-<cstring> מוגדרות פונקציות כמו strlen, strcpy, וכו'. לא קשור לעניין. את כל זה יכלת למצוא אם היית עושה חיפוש על המילים "string cstring". במקרה כזה, היית מוצא את האשכול הזה, עם ההסבר:
אלצ'קו כתב:
מה שכן, שים לב שאתה לא נוגע ב-string.h, שזו הספריה של C, אלא משתמש ב-string, קובץ שונה לחלוטין. התקן של CPP קובע שלקבצי האינקלוד של הספריה הסטנדרטית אין סיומת h. לדוגמה: iostream, string, vector וכו'.

string.h כולל פונקציות מוכרות מ-C כמו strcat ו-strlen (ראה פירוט מלא כאן), אבל לא קשור אלינו ב-CPP.

בנוסף, שים לב שקבצי הספריה הסטנדרטית של C משנים את שמם ב-CPP. קובץ בשם file.h מהספריה הסטנדרטית של C ייקרא cfile ב-CPP - בלי סיומת h ועם התחילית c. כך math.h, time.h, ו-stdlib.h הופכים ל-cmath, ctime ו-cstdlib בהתאמה ב-CPP. באותו אופן string.h הופך ל-cstring, אבל שוב זה לא קשור אליך ב-CPP. אתה צריך להשתמש ב-string הנקי והבטוח.

חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה