### Array to Vector

How would I go about changing this program of arrays into one with vectors?

 ``1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889`` `````` /* -------------------------------------------------------- This program uses a "char" array & the method known as “the Sieve of Erastosthenes” to determine & print all prime numbers up to 1000. -------------------------------------------------------- */ #include #include using namespace std ; /* -------------------------------------------------------- Function initializeNumbers sets numbers 0 & 1 to Ignore, and sets numbers 2 & above to Unvisited. -------------------------------------------------------- */ void initializeNumbers ( char number[], int ARRAY_SIZE ) { number[0] = 'I' ; // 'I' means Ignore number[1] = 'I' ; for ( int i = 2 ; i < ARRAY_SIZE ; i ++ ) number[i] = 'U' ; // 'U' means Unvisited } // end initializeNumbers function /* -------------------------------------------------------- Function indexOfLeastU returns the least index such that the character stored at that index is 'U', with the exception that -1 is returned if no array element has value 'U'. -------------------------------------------------------- */ int indexOfLeastU ( char number[], int ARRAY_SIZE ) { for ( int i = 0 ; i < ARRAY_SIZE ; i ++ ) if ( number[i] == 'U' ) return i ; return -1 ; } // end indexOfLeastU function /* -------------------------------------------------------- Function identifyPrimes identifies which numbers are prime by placing 'P's at those indices. Composite #'s are marked with 'C's. -------------------------------------------------------- */ void identifyPrimes ( char number[], int ARRAY_SIZE ) { int leastU = indexOfLeastU ( number, ARRAY_SIZE ) ; while ( leastU >= 0 ) { number [leastU] = 'P' ; // 'P' for Prime // mark multiples as Composite ... for ( int i = (2 * leastU) ; i < ARRAY_SIZE ; i += leastU ) number [i] = 'C' ; // 'C' for Composite leastU = indexOfLeastU ( number, ARRAY_SIZE ) ; } // end while loop } // end identifyPrimes function /* -------------------------------------------------------- Function printPrimes prints those array indices whose corresponding elements have the value 'P'. -------------------------------------------------------- */ void printPrimes ( char number[], int ARRAY_SIZE ) { // print the indices at which a 'P' is stored ... cout << "\nThe prime numbers up to 1000 are:\n\n" ; for ( int i = 0 ; i < ARRAY_SIZE ; i ++ ) if ( number[i] == 'P' ) cout << i << '\t' ; cout << endl << endl ; } // end printPrimes function int main ( ) { // declare & initialize constants ... const int MAX_NUMBER = 1000 ; const int ARRAY_SIZE = MAX_NUMBER + 1 ; // declare array ... char number [ ARRAY_SIZE ] = { '\0' } ; initializeNumbers ( number, ARRAY_SIZE ) ; identifyPrimes ( number, ARRAY_SIZE ) ; printPrimes ( number, ARRAY_SIZE ) ; } // end main function ``````
since you are using strings, it is appropiate to use `std::string` rather than `std::vector`.
 ``12345678910`` ``````// basically, you declare a string using : string myStr( "bbbbbbbbbbbbbb* ); // or string myStr( 100, ' ' ); // have a string of a size of 100 and fill it w/ spaces // and access the element using [] myStr[ 10 ] = 'a'; // note that myStr[ 10 ] must be initialized otherwise, it will cause undefined behavior // you can change the contents of it using the = operator : myStr = "the quick brown fox jumps over the ..." ``````

http://www.cplusplus.com/reference/string/string/
http://www.cprogramming.com/tutorial/string.html
Last edited on
Topic archived. No new replies allowed.