C++ Tutorial/deque/deque subscript indexer
Содержание
- 1 Change the values of some of deque"s elements
- 2 Insert "value" into every element but the first
- 3 Print out a deque, reference its content by index,
- 4 Use indexer to add elements to a deque
- 5 Use subscript operator to modify element at location 1
- 6 Use subscript operator to obtain elements of values
Change the values of some of deque"s elements
<source lang="cpp">#include <iostream>
- include <deque>
using namespace std; void show(const char *msg, deque<int> q); int main() {
deque<int> dq(10); for(unsigned i=0; i < dq.size(); ++i) dq[i] = i*i; show("Contents of dq: ", dq); // Create another deque that contains a subrange of dq. deque<int> dq2(dq.begin()+2, dq.end()-4); // Display the contents of dq2 by using an iterator. show("dq2 contains a subrange of dq: ", dq2); cout << endl; // Change the values of some of dq2"s elements. dq2[1] = 100; dq2[2] = 88; dq2[4] = 99; show("After the assignments, dq2 now contains: ", dq2); cout << endl; return 0;
} // Display the contents of a deque<int>. void show(const char *msg, deque<int> q) {
cout << msg; for(unsigned i=0; i < q.size(); ++i) cout << q[i] << " "; cout << "\n";
}</source>
Insert "value" into every element but the first
<source lang="cpp">/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference" * by Nicolai M. Josuttis, Addison-Wesley, 1999 * * (C) Copyright Nicolai M. Josuttis 1999. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */
- include <iostream>
- include <deque>
- include <string>
- include <algorithm>
- include <iterator>
using namespace std; int main() {
// create empty deque of strings deque<string> coll; // insert several elements coll.assign (3, string("string")); coll.push_back ("last string"); coll.push_front ("BBB string"); coll.push_front ("CCC string"); coll.push_front ("AAA string"); // print elements separated by newlines copy (coll.begin(), coll.end(),ostream_iterator<string>(cout,"\n")); cout << endl; // insert ""another"" into every element but the first for (unsigned i=1; i<coll.size(); ++i) { coll[i] = "another " + coll[i]; } // print elements separated by newlines copy (coll.begin(), coll.end(),ostream_iterator<string>(cout,"\n")); cout << endl;
}</source>
AAA string CCC string BBB string string string string last string AAA string another CCC string another BBB string another string another string another string another last string
Print out a deque, reference its content by index,
<source lang="cpp">#include <deque>
- include <iostream>
using namespace std; typedef deque<char> CHARDEQUE; void print_contents(CHARDEQUE deque, char*); int main(void){
CHARDEQUE a; if(a.empty()) cout << "a is empty" << endl; else cout << "a is not empty" << endl; a.push_back("A"); a.push_back("B"); a.push_back("C"); a.push_back("D"); if(a.empty()) cout << "a is empty" << endl; else cout << "a is not empty" << endl; print_contents(a,"a"); cout << "The first element of a is " << a[0] << endl; cout << "The first element of a is " << a.at(0) << endl; cout << "The last element of a is " << a[a.size()-1] << endl; cout << "The last element of a is " << a.at(a.size()-1) << endl;
} void print_contents(CHARDEQUE deque, char *name){
CHARDEQUE::iterator pdeque; cout << "The contents of "<< name << " : "; for(pdeque = deque.begin(); pdeque != deque.end(); pdeque++) cout << *pdeque <<" "; cout << endl;
}</source>
Use indexer to add elements to a deque
<source lang="cpp">#include <iostream>
- include <cassert>
- include <algorithm>
- include <vector>
- include <deque>
using namespace std; int main() {
deque<int> deque1(5); for (int i = 0; i < 5; ++i) deque1[i] = i + 5; deque<int>::iterator pos; for (pos=deque1.begin(); pos!=deque1.end(); ++pos) { cout << *pos << " "; } return 0;
}</source>
5 6 7 8 9 "
Use subscript operator to modify element at location 1
<source lang="cpp">#include <iostream> using std::cout; using std::endl;
- include <deque> // deque class-template definition
- include <algorithm> // copy algorithm
- include <iterator> // ostream_iterator
int main() {
std::deque< double > values; // create deque of doubles std::ostream_iterator< double > output( cout, " " ); // insert elements in values values.push_front( 2.2 ); values.push_front( 3.5 ); values.push_back( 1.1 ); cout << "values contains: "; std::copy( values.begin(), values.end(), output ); // use subscript operator to modify element at location 1 values[ 1 ] = 5.4; cout << "\nAfter values[ 1 ] = 5.4, values contains: "; std::copy( values.begin(), values.end(), output ); cout << endl; return 0;
}</source>
values contains: 3.5 2.2 1.1 After values[ 1 ] = 5.4, values contains: 3.5 5.4 1.1
Use subscript operator to obtain elements of values
<source lang="cpp">#include <iostream> using std::cout; using std::endl;
- include <deque> // deque class-template definition
- include <algorithm> // copy algorithm
- include <iterator> // ostream_iterator
int main() {
std::deque< double > values; // create deque of doubles std::ostream_iterator< double > output( cout, " " ); values.push_front( 2.2 ); values.push_front( 3.5 ); values.push_back( 1.1 ); cout << "values contains: "; // use subscript operator to obtain elements of values for ( int i = 0; i < values.size(); i++ ) cout << values[ i ] << " "; cout << endl; return 0;
}</source>
values contains: 3.5 2.2 1.1