定义一个类对list进行封装,使得可以用下标对list进行操作:
1 #include <list>
2 #include <vector>
3 #include <iostream>
4 #include <string>
5
6 using namespace std;
7
8 class Test
9 {
10 public:
11 Test();
12 //~Test();
13 Test(list<string> strList);
14 string &operator[](int n); //一般这里需要有&的,可以防止对象返回时去调用构造函数(因为return值,会有一个把值拷贝下来的过程)
15
16 public:
17 list<string> m_strList;
18 };
19
20
21 Test::Test(list<string> strList)
22 {
23 m_strList = strList;
24 }
25
26 //Test::~Test() //当定义析构函数,而没有实现时会报错.
27 //{
28 //
29 //}
30
31 string& Test::operator[](int n)
32 {
33 list<string>::iterator i = m_strList.begin();
34 vector<list<string>::iterator> vecStrIter;
35 for (; i != m_strList.end(); i++)
36 {
37 vecStrIter.push_back(i);
38 }
39 return *(vecStrIter[n]);
40 }
41
42
43 int main()
44 {
45 string str[4] = {"a", "li", "ba", "ba!"};
46 list<string> strList(str, str+4);
47 Test test(strList);
48 cout << test[1] << endl;
49 return 0;
50 }
阿里钉钉面试题
最新推荐文章于 2024-08-23 15:54:50 发布