• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            麒麟子

            ~~

            導(dǎo)航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統(tǒng)計

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            [導(dǎo)入]List methods



            Table 6.12. Constructors and Destructor of Lists Operation Effect
            list<Elem> c Creates an empty list without any elements
            list<Elem> c1(c2) Creates a copy of another list of the same type (all elements are copied)
            list<Elem> c(n) Creates a list with n elements that are created by the default constructor
            list<Elem> c(n,elem) Creates a list initialized with n copies of element elem
            list<Elem> c (beg,end) Creates a list initialized with the elements of the range [beg,end)
            c.~list<Elem>() Destroys all elements and frees the
            memory

            Table 6.13. Nonmodifying Operations of Lists Operation Effect
            c.size() Returns the actual number of elements
            c. empty () Returns whether the container is empty (equivalent to size()==0, but might be faster)
            c.max_size() Returns the maximum number of elements possible
            c1 == c2 Returns whether c1 is equal to c2
            c1 != c2 Returns whether c1 is not equal to c2 (equivalent to ! (c1==c2))
            c1 < c2 Returns whether c1 is less than c2
            c1 > c2 Returns whether c1 is greater than c2 (equivalent to c2<c1)
            c1 <= c2 Returns whether c1 is less than or equal to c2 (equivalent to ! (c2<c1) )
            c1 >= c2 Returns whether c1 is greater than or equal to c2 (equivalent to ! (c1<c2))

            Table 6.14. Assignment Operations of Lists Operation Effect
            c1 = c2 Assigns all elements of c2 to c1
            c.assign(n,elem) Assigns n copies of element elem
            c.assign(beg,end) Assigns the elements of the range [beg,end)
            c1.swap(c2) Swaps the data of c1 and c2
            swap(c1,c2) Same (as global function)

            Table 6.15. Direct Element Access of Lists Operation Effect
            c.front() Returns the first element (no check whether a first element exists)
            c.back() Returns the last element (no check whether a last element exists)

            Table 6.16. Iterator Operations of Lists Operation Effect
            c.begin() Returns a bidirectional iterator for the first element
            c.end() Returns a bidirectional iterator for the position after the last element
            c.rbegin() Returns a reverse iterator for the first element of a reverse iteration
            c.rend() Returns a reverse iterator for the position after the last element of a reverse iteration

            Table 6.17. Insert and Remove Operations of Lists Operation Effect
            c.insert (pos, elem) Inserts at iterator position pos a copy of elem and returns the position of the new element
            c.insert (pos,n, elem) Inserts at iterator position pos n copies of elem (returns nothing)
            c. insert (pos, beg,end) Inserts at iterator position pos a copy of all elements of the range [beg,end) (returns nothing)
            c.push_back(elem) Appends a copy of elem at the end
            c.pop_back() Removes the last element (does not return it)
            c.push_front(elem) Inserts a copy of elem at the beginning
            c.pop_front () Removes the first element (does not return it)
            c. remove (val) Removes all elements with value val
            c.remove_if (op) Removes all elements for which op(elem) yields true
            c. erase (pos) Removes the element at iterator position pos and returns the position of the next element
            c.erase (beg,end) Removes all elements of the range [beg,end) and returns the position of the next element
            c. resize (num) Changes the number of elements to num (if size() grows, new elements are created by their default constructor)
            c.resize (num, elem) Changes the number of elements to num (if size ( ) grows, new elements are copies of elem)
            c. clear () Removes all elements (makes the container empty)

            Table 6.18. Special Modifying Operations for Lists Operation Effect
            c.unique() Removes duplicates of consecutive elements with the same value
            c.unique(op) Removes duplicates of consecutive elements, for which op() yields true
            c1.splice(pos,c2) Moves all elements of c2 to c1 in front of the iterator position pos
            c1.splice(pos,c2,c2pos) Moves the element at c2pos in c2 in front of pos of list c1 (c1 and c2 may be identical)
            c1.splice(pos,c2,c2beg,c2end) Moves all elements of the range [c2beg,c2end) in c2 in front of pos of list c1 (c1 and c2 may be identical)
            c.sort() Sorts all elements with operator <
            c.sort(op) Sorts all elements with op()
            c1.merge(c2) Assuming both containers contain the elements sorted, moves all elements of c2 into c1 so that all elements are merged and still sorted
            c1.merge(c2,op) Assuming both containers contain the elements sorted due to the sorting criterion op(), moves all elements of c2 into c1 so that all elements are merged and still sorted according to op()
            c.reverse() Reverses the order of all elements

            Examples of Using Lists
            The following example in particular shows the use of the special member functions for lists:


            // cont/list1.cpp

            #include <iostream>
            #include <list>
            #include <algorithm>
            using namespace std;

            void printLists (const list<int>& 11, const list<int>& 12)
            {

            cout << "list1: ";
            copy (l1.begin(), l1.end(), ostream_iterator<int>(cout," "));
            cout << endl << "list2: ";
            copy (12.begin(), 12.end(), ostream_iterator<int>(cout," "));
            cout << endl << endl;

            }

            int main()
            {

            //create two empty lists
            list<int> list1, list2;

            //fill both lists with elements
            for (int i=0; i<6; ++i) {
            list1.push_back(i);
            list2.push_front(i);
            }
            printLists(list1, list2);

            //insert all elements of list1 before the first element with value 3 of list2
            //-find() returns an iterator to the first element with value 3
            list2.splice(find(list2.begin(),list2.end(), // destination position
            3),
            list1); // source list
            printLists(list1, list2);

            //move first element to the end
            list2.splice(list2.end(), // destination position
            list2, // source list
            list2.begin()); // source position
            printLists(list1, list2);

            //sort second list, assign to list1 and remove duplicates
            list2.sort();
            list1 = list2;
            list2.unique();
            printLists(list1, list2);

            //merge both sorted lists into the first list
            list1.merge(list2);
            printLists(list1, list2);
            }


            The program has the following output:


            list1: 0 1 2 3 4 5
            list2: 5 4 3 2 1 0

            list1:
            list2: 5 4 0 1 2 3 4 5 3 2 1 0

            list1:
            list2: 4 0 1 2 3 4 5 3 2 1 0 5

            list1: 0 0 1 1 2 2 3 3 4 4 5 5
            list2: 0 1 2 3 4 5

            list1: 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
            list2:


            Vector的
            //建立一個向量并為之分配內(nèi)存
            std::vector<int> v; // create an empty vector
            v.reserve (80); // reserve memory for 80 elements
            //建立一個向量,并用默認(rèn)的構(gòu)造函數(shù)初始化,因此速度較慢
            std::vector<T> v(5); // creates a vector and initializes it with five values
            // (calls five times the default constructor of type T)


            Table 6.2. Constructors and Destructors of Vectors Operation Effect
            vector<Elem> c Creates an empty vector without any elements
            vector<Elem> c1(c2) Creates a copy of another vector of the same type (all elements are copied)
            vector<Elem> c(n) Creates a vector with n elements that are created by the default constructor
            vector<Elem> c(n,elem) Creates a vector initialized with n copies of element elem
            vector<Elem> c(beg,end) Creates a vector initialized with the elements of the range [beg,end)
            c.~vector<Elem>() Destroys all elements and frees the memory

            Table 6.3. Nonmodifying Operations of Vectors Operation Effect
            c.size() Returns the actual number of elements
            c.empty() Returns whether the container is empty (equivalent to size()==0, but might be faster)
            c.max_size() Returns the maximum number of elements possible
            capacity() Returns the maximum possible number of elements without reallocation
            reserve() Enlarges capacity, if not enough yet[7] //如果不夠的話就繼續(xù)分配內(nèi)存
            c1 == c2 Returns whether c1 is equal to c2
            c1 != c2 Returns whether c1 is not equal to c2 (equivalent to ! (c1==c2))
            c1 < c2 Returns whether c1 is less than c2
            c1 > c2 Returns whether c1 is greater than c2 (equivalent to c2<c1)
            c1 <= c2 Returns whether c1 is less than or equal to c2 (equivalent to ! (c2<c1))
            c1 >= c2 Returns whether c1 is greater than or equal to c2 (equivalent to ! (c1<c2))

            Table 6.4. Assignment Operations of Vectors Operation Effect
            c1 = c2 Assigns all elements of c2 to c1
            c.assign(n,elem) Assigns n copies of element elem
            c.assign(beg,end) Assigns the elements of the range [beg,end)
            c1.swap(c2) Swaps the data of c1 and c2
            swap(c1,c2) Same (as global function)

            Table 6.5. Direct Element Access of Vectors Operation Effect
            c.at(idx) Returns the element with index idx (throws range error exception if idx is out of range)
            c[idx] Returns the element with index idx (no range checking)
            c.front() Returns the first element (no check whether a first element exists)
            c.back() Returns the last element (no check whether a last element exists)

            通過at來訪問元素的時候如果越界會有一個out_of_range異常
            用[]重載來訪問的時候只會報錯

            Table 6.6. Iterator Operations of Vectors Operation Effect
            c.begin() Returns a random access iterator for the first element
            c.end() Returns a random access iterator for the position after the last element
            c.rbegin() Returns a reverse iterator for the first element of a reverse iteration
            c.rend() Returns a reverse iterator for the position after the last element of a reverse iteration

            Table 6.7. Insert and Remove Operations of Vectors Operation Effect
            c.insert(pos,elem) Inserts at iterator position pos a copy of elem and returns the position of the new element
            c.insert(pos,n,elem) Inserts at iterator position pos n copies of elem (returns nothing)
            c.insert(pos,beg,end) Inserts at iterator position pos a copy of all elements of the range [beg,end) (returns nothing)
            c.push_back(elem) Appends a copy of elem at the end
            c.pop_back() Removes the last element (does not return it)
            c.erase(pos) Removes the element at iterator position pos and returns the position of the next element
            c.erase(beg,end) Removes all elements of the range [beg,end) and returns the position of the next element
            c.resize(num) Changes the number of elements to num (if size() grows, new elements are created by their default constructor)
            c.resize(num,elem) Changes the number of elements to num (if size() grows, new elements are copies of elem)
            c.clear() Removes all elements (makes the container empty)

            std::vector<Elem> coll;
            ...
            //remove all elements with value val
            coll.erase(remove(coll.begin(),coll.end(),
            val),
            coll.end());

            std::vector<Elem> coll;
            ...
            //remove first element with value val
            std::vector<Elem>::iterator pos;
            pos = find(coll.begin(),coll.end(),
            val);
            if (pos != coll.end()) {
            coll.erase(pos);
            }

            vector<bool>有特殊的函數(shù)
            Table 6.8. Special Operations of vector<bool> Operation Effect
            c.flip() Negates all Boolean elements (complement of all bits)
            m[idx].flip() Negates the Boolean element with index idx (complement of a single bit)
            m[idx] = val Assigns val to the Boolean element with index idx (assignment to a single bit)
            m[idx1] = m[idx2] Assigns the value of the element with index idx2 to the element with index idx1

            Examples of Using Vectors
            The following example shows a simple usage of vectors:


            // cont/vector1.cpp

            #include <iostream>
            #include <vector>
            #include <string>
            #include <algorithm>
            using namespace std;

            int main()
            {

            //create empty vector for strings
            vector<string> sentence;

            //reserve memory for five elements to avoid reallocation
            sentence.reserve(5);

            //append some elements
            sentence.push_back("Hello,");
            sentence.push_back("how");
            sentence.push_back("are");
            sentence.push_back("you");
            sentence.push_back("?");

            //print elements separated with spaces
            copy (sentence.begin(), sentence.end(),
            ostream_iterator<string>(cout," "));
            cout << endl;

            //print ''technical data''
            cout << " max_size(): " << sentence.max_size() << endl;
            cout << " size(): " << sentence.size() << endl;
            cout << " capacity(): " << sentence.capacity() << endl;

            //swap second and fourth element
            swap (sentence[1], sentence [3]);

            //insert element "always" before element "?"
            sentence.insert (find(sentence.begin(),sentence.end(),"?"),
            "always");

            //assign "!" to the last element
            sentence.back() = "!";

            //print elements separated with spaces
            copy (sentence.begin(), sentence.end(),
            ostream_iterator<string>(cout," "));
            cout << endl;

            //print "technical data" again
            cout << " max_size(): " << sentence.max_size() << endl;
            cout << " size(): " << sentence.size() << endl;
            cout << " capacity(): " << sentence.capacity() << endl;

            }


            The output of the program might look like this:


            Hello, how are you ?
            max_size(): 268435455
            size(): 5
            capacity(): 5
            Hello, you are how always !
            max_size(): 268435455
            size(): 6
            capacity(): 10

            文章來源:http://ly-weiwei.blog.163.com/blog/static/7297528320092311263852

            posted on 2009-03-31 13:26 麒麟子 閱讀(76) 評論(0)  編輯 收藏 引用

            国内精品久久久久影院一蜜桃| 亚洲AV无码1区2区久久| 成人a毛片久久免费播放| 久久久久国产精品| 国产精品伊人久久伊人电影| 久久精品国产亚洲精品| 久久夜色精品国产亚洲av| 久久精品国产2020| 久久国产精品-久久精品| 久久一区二区三区免费| 国产成人精品综合久久久| 国产精品久久久亚洲| 精品久久久久国产免费| 久久久噜噜噜久久中文字幕色伊伊 | 精品久久人人做人人爽综合 | 国产国产成人精品久久| 久久成人18免费网站| 久久精品国产亚洲av麻豆图片 | 亚洲AV无码久久| 亚洲级αV无码毛片久久精品| 久久国产精品99国产精| 天天久久狠狠色综合| 热综合一本伊人久久精品| 亚洲成av人片不卡无码久久| 久久国产精品二国产精品| 97久久婷婷五月综合色d啪蜜芽 | 国产精品久久亚洲不卡动漫| 一本大道加勒比久久综合| 久久精品国产亚洲5555| 久久久久亚洲精品日久生情 | 久久综合九色欧美综合狠狠| 伊人热热久久原色播放www| 亚洲av日韩精品久久久久久a | 国产精品久久久久久影院| 欧美精品福利视频一区二区三区久久久精品 | 国产精品久久久久久搜索| 性做久久久久久久久老女人| 亚洲va国产va天堂va久久| 亚洲国产欧洲综合997久久| 久久精品国产亚洲av麻豆图片 | 狠狠色丁香久久婷婷综合蜜芽五月|