1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 容器的访问元素的成员函数(front back 下标和at)返回的都是引用 如果顺序容器是c

容器的访问元素的成员函数(front back 下标和at)返回的都是引用 如果顺序容器是c

时间:2021-02-09 22:33:55

相关推荐

容器的访问元素的成员函数(front back 下标和at)返回的都是引用 如果顺序容器是c

顺序容器的访问元素的成员函数(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 10typedef 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的引用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。