#include <bits/stdc++.h>
using namespace std;
class A
{
public:
/* 构造函数 */
A()
{
for (int i = 0; i < 5; i++)
{
intVec.push_back(i);
}
}
/* 用迭代器输出容器中的值 */
void printVec() {
for (vector<int>::iterator it = intVec.begin(); it != intVec.end(); it++){
cout << (*it) << " ";
}
cout << endl;
}
/* auto :拷贝一份容器中元素,而不会改变原容器的值
auto的自动类型推断发生在编译期,所以使用auto并不会造成程序运行时效率的降低。*/
void test1()
{
for (auto i : intVec)
{
i += 1;
}
}
/* auto & :修改了原容器中元素的值 */
void test2()
{
for (auto& i : intVec)
{
i += 1;
}
}
/* auto && :也可以修改元素的值(一般用这种方法) */
void test3()
{
for (auto&& i : intVec)
{
i += 1;
}
}
/* const auto & :只读 */
void test4()
{
for (const auto& i : intVec)
{
/* 报错:表达式必须是可修改的左值 */
// i += 1;
}
}
private:
vector<int> intVec;
};
int main()
{
A a;
a.printVec(); //0 1 2 3 4
a.test1(); //auto
a.printVec(); //0 1 2 3 4
a.printVec(); //0 1 2 3 4
a.test2(); //auto&
a.printVec(); //1 2 3 4 5
a.printVec(); //1 2 3 4 5
a.test3(); //auto&&
a.printVec(); //2 3 4 5 6
}
发布日期:
2021-07-01
阅读次数: