list的三种循环遍历方式
// int的类型
#include <iostream>
#include <list>
int main() {
std::list<int> ls;
ls.push_back(120);
ls.push_back(110);
ls.push_front(130);
ls.push_front(140);
ls.push_front(150);
ls.push_back(100);
for (int i = 0; i < ls.size(); ++i) {
}
for (int ele:ls) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::list<int>::iterator ele;
for (ele = ls.begin(); ele != ls.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
ls.pop_back();
ls.pop_front();
ls.emplace_back(200);
ls.emplace_front(300);
return 0;
}
// float的类型
#include <iostream>
#include <list>
int main() {
std::list<float> ls;
ls.push_back(120.123);
ls.push_back(110.123);
ls.push_front(130.123);
ls.push_front(140.123);
ls.push_front(150.123);
ls.push_back(100.123);
for (int i = 0; i < ls.size(); ++i) {
}
for (float ele:ls) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::list<float>::iterator ele;
for (ele = ls.begin(); ele != ls.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
ls.pop_back();
ls.pop_front();
ls.emplace_back(200.123);
ls.emplace_front(300.123);
return 0;
}
// string的类型
#include <iostream>
#include <list>
int main() {
std::list<std::string> ls;
ls.push_back("CCC");
ls.push_back("BBB");
ls.push_front("DDD");
ls.push_front("EEE");
ls.push_front("FFF");
ls.push_back("AAA");
for (std::string ele:ls) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::list<std::string>::iterator ele;
for (ele = ls.begin(); ele != ls.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
ls.pop_back();
ls.pop_front();
ls.emplace_back("XXX");
ls.emplace_front("YYY");
return 0;
}
// class的类型
#include <iostream>
#include <list>
class A {
public:
std::string name = "";
int age = 0;
A(std::string name_temp, int age_temp) : name(name_temp), age(age_temp) {
std::cout << "执行了构造函数 " << name << std::endl;
}
~A() {
std::cout << "执行了析构函数 " << name << std::endl;
}
};
int main() {
A a1("张一", 10);
A a2("张二", 20);
A a3("张三", 30);
A a4("张四", 40);
std::list<A> ls;
ls.push_front(a3);
ls.push_back(a2);
ls.push_back(a1);
ls.push_front(a4);
for (A ele:ls) {
std::cout << "基于范围的for循环:" << ele.name << ele.age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::list<A>::iterator ele;
for (ele = ls.begin(); ele != ls.end(); ++ele) {
std::cout << "基于容器的for循环:" << (*ele).name << (*ele).age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
ls.pop_back();
ls.pop_front();
ls.emplace_back(A("张五", 50));
ls.emplace_front(A("张六", 60));
return 0;
}
// class的类型(指针)
#include <iostream>
#include <list>
class A {
public:
std::string name = "";
int age = 0;
A(std::string name_temp, int age_temp) : name(name_temp), age(age_temp) {
std::cout << "执行了构造函数 " << name << std::endl;
}
~A() {
std::cout << "执行了析构函数 " << name << std::endl;
}
};
int main() {
A a1("张一", 10);
A a2("张二", 20);
A a3("张三", 30);
A a4("张四", 40);
std::list<A*> ls;
ls.push_front(&a3);
ls.push_back(&a2);
ls.push_back(&a1);
ls.push_front(&a4);
for (A* ele:ls) {
std::cout << "基于范围的for循环:" << ele->name << ele->age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::list<A*>::iterator ele;
for (ele = ls.begin(); ele != ls.end(); ++ele) {
std::cout << "基于容器的for循环:" << (*ele)->name << (*ele)->age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
ls.pop_back();
ls.pop_front();
A a5("张五", 50);
A a6("张六", 60);
ls.emplace_back(&a5);
ls.emplace_front(&a6);
return 0;
}
vector的三种循环遍历方式
// int的类型
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
v.push_back(120);
v.push_back(110);
v.push_back(100);
for (int i = 0; i < v.size(); ++i) {
std::cout << v[i] << std::endl;
}
for (int ele:v) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::vector<int>::iterator ele;
for (ele = v.begin(); ele < v.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
v.pop_back();
v.emplace_back(200);
return 0;
}
// float的类型
#include <iostream>
#include <vector>
int main() {
std::vector<float> v;
v.push_back(120.123);
v.push_back(110.123);
v.push_back(100.123);
for (int i = 0; i < v.size(); ++i) {
std::cout << v[i] << std::endl;
}
for (float ele:v) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::vector<float>::iterator ele;
for (ele = v.begin(); ele < v.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
v.pop_back();
v.emplace_back(200.123);
return 0;
}
// string的类型
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> v;
v.push_back("CCC");
v.push_back("BBB");
v.push_back("AAA");
for (std::string ele:v) {
std::cout << "基于范围的for循环:" << ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::vector<std::string>::iterator ele;
for (ele = v.begin(); ele < v.end(); ++ele) {
std::cout << "基于容器的for循环:" << *ele << std::endl;
}
std::cout << "-----------------------------" << std::endl;
v.pop_back();
v.emplace_back("XXX");
return 0;
}
// class的类型
#include <iostream>
#include <vector>
class A {
public:
std::string name = "";
int age = 0;
A(std::string name_temp, int age_temp) : name(name_temp), age(age_temp) {
std::cout << "执行了构造函数 " << name << std::endl;
}
~A() {
std::cout << "执行了析构函数 " << name << std::endl;
}
};
int main() {
A a1("张一", 10);
A a2("张二", 20);
A a3("张三", 30);
A a4("张四", 40);
std::vector<A> v;
v.push_back(a2);
v.push_back(a1);
for (A ele:v) {
std::cout << "基于范围的for循环:" << ele.name << ele.age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::vector<A>::iterator ele;
for (ele = v.begin(); ele < v.end(); ++ele) {
std::cout << "基于容器的for循环:" << (*ele).name << (*ele).age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
v.pop_back();
v.emplace_back(A("张五", 50));
return 0;
}
// class的类型(指针)
#include <iostream>
#include <vector>
class A {
public:
std::string name = "";
int age = 0;
A(std::string name_temp, int age_temp) : name(name_temp), age(age_temp) {
std::cout << "执行了构造函数 " << name << std::endl;
}
~A() {
std::cout << "执行了析构函数 " << name << std::endl;
}
};
int main() {
A a1("张一", 10);
A a2("张二", 20);
A a3("张三", 30);
A a4("张四", 40);
std::vector<A*> v;
v.push_back(&a2);
v.push_back(&a1);
for (A* ele:v) {
std::cout << "基于范围的for循环:" << ele->name << ele->age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
std::vector<A*>::iterator ele;
for (ele = v.begin(); ele < v.end(); ++ele) {
std::cout << "基于容器的for循环:" << (*ele)->name << (*ele)->age << std::endl;
}
std::cout << "-----------------------------" << std::endl;
v.pop_back();
A a5("张五", 50);
A a6("张六", 60);
v.emplace_back(&a5);
return 0;
}