容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用
生活随笔
收集整理的這篇文章主要介紹了
容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
順序容器的訪問元素的成員函數(front,back,下標和at)返回的都是引用,如果順序容器是const的對象,那么返回的是const的引用,下面有個例子說明問題:
#include <iostream> #include <string> #include <vector> #include <deque> #include <list> #include <forward_list> #include <string> #include <array> using namespace std; #define LENGTH 10 typedef int TYPE; typedef vector<TYPE> VECTORTYPE; typedef deque<TYPE> DEQUETYPE; typedef list<TYPE> LISTTYPE; typedef forward_list<TYPE> FORWARD_LISTTYPE; typedef array<TYPE,LENGTH> ARRAYTYPE; void print(VECTORTYPE & ); void print(DEQUETYPE & ); void print(LISTTYPE & ); void print(FORWARD_LISTTYPE & ); void print(ARRAYTYPE & ); void print(string &); void pluralize(size_t ,string &); void print(list<string> &); void print(vector<string> &); int main() {const vector<int> v_int{1,2,3,4,5,6,7,8,9};//這里v_int是const的vectorint & a = v_int[1]; //這里是錯誤的。不能把const引用賦值給普通引用deque<int> d_int{1,2,3,4,5};list<int> l_int{1,2,3,4,5};forward_list<int> f_int{1,2,3,4,5};array<int,10> a_int{1,2,3,4,5,6};string str{"abcdefg"};cout << "v_int is:"<< v_int.front() << endl;cout << "v_int.front is:" ;cout << v_int.front() << endl; cout << v_int.back() << endl;cout << d_int.front() << endl; cout << d_int.back() << endl;cout << l_int.front() << endl; cout << l_int.back() << endl;cout << f_int.front() << endl; cout << a_int.front() << endl; cout << a_int.back() << endl;cout << str.front() << endl; cout << str.back() << endl;d_int.at(1) = 1025;cout << v_int[1] << endl;cout << d_int[1] << endl;cout << a_int[1] << endl;cout << str[1] << endl;cout << "at function :" << endl;cout << v_int.at(0) << endl;cout << d_int.at(1) << endl;cout << a_int.at(1) << endl;cout << str.at(1) << endl; return 0; } void print(VECTORTYPE &vec) {for(VECTORTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(DEQUETYPE &vec) {for(DEQUETYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(LISTTYPE &vec) {for(LISTTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(FORWARD_LISTTYPE &vec) {for(FORWARD_LISTTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(ARRAYTYPE &vec) {for(ARRAYTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(string & s_vec) {for(string::iterator i = s_vec.begin(); i != s_vec.end() ; ++i) {cout << *i << " ";}cout << endl; } void pluralize(size_t cnt,string &word) {if(cnt > 1)word.push_back('s');//equal to word += 's' }void print(vector<string> & s_vec) {for(auto &i :s_vec)cout << i << " ";cout << endl; } void print(list<string> & s_list) {for(auto & i: s_list)cout << i << " ";cout << endl; }v_int是const對象,所以v_int[1]也是const引用的。所以不能賦值給普通的引用。
總結
以上是生活随笔為你收集整理的容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++primer 第五版 p205 2
- 下一篇: 容器的访问元素的成员函数(front,b