Προς το περιεχόμενο

Μια βοήθεια για vectors και classes C++


stanlee

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους. Έχω δηλώσει ένα string πχ str ="&A#3&B#1&C#2&A#3&Β#1&Α#3.." και μία κλάση

class SigRep

{

string S_;

int freq_;

vector<int> positions_;

}

 

όπου S_ θα παίρνει τις τιμές που βρίσκονται μέσα στα "&" του str

όπου freq_ είναι ο ακέραιος αριθμός της συχνότητας που εμφανίζεται το S_ μέσα στο str

όπου positions_ θα είναι η θέσεις μέσα στο string που εμφανίζεται.

 

πχ για το παραπάνω παράδειγμα

 

για το Α#3

S_ = A#3

freq_ = 3

positions_[1] = 1

positions_[2] = 4

positions_[3] = 6

 

 

ενώ για το B#1

 

 

S_ = Β#1

freq_ = 2

positions_[1] = 2

positions_[2] = 5

 

 

Ένα παράδειγμα του κώδικα που χρησιμοποιώ...

>
Έχω κάνει την εξής συνάρτηση
vector<SigRep> Find_RP1( string S )
{
   vector<SigRep> RP1;
   //RP1.clear();
   int p = 0;

   for ( int i = 0; i <= S.length()/4; i += 4 )
   {
       for ( int j = 0; j <= RP1.size()+1; j++ )
       {
           cout << RP1[ j ].note << endl;

           if ( !RP1[ j ].note.find(S.substr( i , 4 )) )
           {

               RP1[ j ].note = S.substr( i , 4 );
               cout << RP1[ j ].note << endl;
               cout << endl;
           }
           else
           {
               cout << "RP1 found" << endl;
           }
       }//for j
   }


   return RP1;

}


και η main μου είναι κάπως έτσι

int main(int argc, char* argv[])
{
   vector<SigRep> RP1;
   SRP rp1;
   string s1;
   int n;
   s1 ="str ="&A#3&B#1&C#2&A#3&Β#1&Α#3";
   n = s1.length()/4;
   for (int i = 0; i <= n; i += 4 )
   {
       for(int j = 0; i <= RP1.size(); j++ )
       {
           if ( rp1.note != s1.substr(i , 4) )
           {
               rp1.note = s1.substr(i , 4);
               cout << rp1.note << endl;
               RP1.push_back(rp1);
           }
       }
   }
   system ("PAUSE");
}

 

τι κάνω λάθος;γίνεται με αυτόν τον τρόπο; δουλεύω σωστά την SigRep με τα vectrors? Μπορεί κάποιος να με βοηθήσει γιατί έχω ψιλομπερδευτεί;

Ευχαριστώ για τον χρόνο σας.

Δημοσ.
Καλησπέρα σε όλους. Έχω δηλώσει ένα string πχ str ="&A#3&B#1&C#2&A#3&Β#1&Α#3.." και μία κλάση

class SigRep

{

string S_;

int freq_;

vector<int> positions_;

}

 

όπου S_ θα παίρνει τις τιμές που βρίσκονται μέσα στα "&" του str

όπου freq_ είναι ο ακέραιος αριθμός της συχνότητας που εμφανίζεται το S_ μέσα στο str

όπου positions_ θα είναι η θέσεις μέσα στο string που εμφανίζεται.

 

πχ για το παραπάνω παράδειγμα

 

για το Α#3

S_ = A#3

freq_ = 3

positions_[1] = 1

positions_[2] = 4

positions_[3] = 6

 

 

ενώ για το B#1

 

 

S_ = Β#1

freq_ = 2

positions_[1] = 2

positions_[2] = 5

 

 

Ένα παράδειγμα του κώδικα που χρησιμοποιώ...

>
Έχω κάνει την εξής συνάρτηση
vector<SigRep> Find_RP1( string S )
{
   vector<SigRep> RP1;
   //RP1.clear();
   int p = 0;

   for ( int i = 0; i <= S.length()/4; i += 4 )
   {
       for ( int j = 0; j <= RP1.size()+1; j++ )
       {
           cout << RP1[ j ].note << endl;

           if ( !RP1[ j ].note.find(S.substr( i , 4 )) )
           {

               RP1[ j ].note = S.substr( i , 4 );
               cout << RP1[ j ].note << endl;
               cout << endl;
           }
           else
           {
               cout << "RP1 found" << endl;
           }
       }//for j
   }


   return RP1;

}


και η main μου είναι κάπως έτσι

int main(int argc, char* argv[])
{
   vector<SigRep> RP1;
   SRP rp1;
   string s1;
   int n;
   s1 ="str ="&A#3&B#1&C#2&A#3&Β#1&Α#3";
   n = s1.length()/4;
   for (int i = 0; i <= n; i += 4 )
   {
       for(int j = 0; i <= RP1.size(); j++ )
       {
           if ( rp1.note != s1.substr(i , 4) )
           {
               rp1.note = s1.substr(i , 4);
               cout << rp1.note << endl;
               RP1.push_back(rp1);
           }
       }
   }
   system ("PAUSE");
}

 

τι κάνω λάθος;γίνεται με αυτόν τον τρόπο; δουλεύω σωστά την SigRep με τα vectrors? Μπορεί κάποιος να με βοηθήσει γιατί έχω ψιλομπερδευτεί;

Ευχαριστώ για τον χρόνο σας.

 

>
vector<int> list;
vector<int>::iterator nextItem;
for(nextItem=list.begin();nextItem!=list.end;nextItem++){
              cout<<nextItem    //<- edw analoga me ton compiler
}

gia ton c++ builder cout<<*nextItem._Myptr;

gia ton g++ cout<<nextItem;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...