包括三个基本组件:
顺序容器:
关联容器:
容器适配器:
容器都是类模板,实例化后成为容器类,用容器类定义的对象称为容器对象。
成员函数
所有容器都有的成员函数:
顺序容器和关联容器中的成员函数:
顺序容器中的成员函数:
vector()
#include <iostream> #include <vector> using namespace std; int main() { vector<int> c; int i; c.assign(10, 5); // 10个5赋给c for (i = 0; i < 10; i++) cout << c[i] << endl; cout << endl; cout << c.size() << endl; return 0; }
#include <iostream> #include <vector> using namespace std; int main() { vector<int> c(20); // 使用assign()之后c的大小也发生了变化 c.assign(10, 5); for (int i = 0; i < c.size(); ++i) { c[i] = 5 - i; cout << c[i] << endl; } c.push_back(100); int t = c.at(0); cout << t << endl; t = c.front(); cout << t << endl; t = *(c.begin()); cout << t << endl; t = c.back(); cout << t << endl; return 0; }
#include <iostream> #include <vector> using namespace std; int main() { vector<int> c(20); // 使用assign()之后c的大小也发生了变化 c.assign(10, 5); for (int i = 0; i < c.size(); ++i) { c[i] = 5 - i; cout << c[i] << endl; } c.push_back(100); int t = c.at(0); cout << t << endl; t = c.front(); // 返回第一个元素 cout << t << endl; // 返回第一个元素的地址 t = *(c.begin()); cout << t << endl; t = c.back(); cout << t << endl; return 0; }
vector插入元素
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v(3); v[0] = 2; v[1] = 7; v[2] = 9; for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; v.insert(v.begin(), 8); // 在最前面插入新元素 for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; v.insert(v.begin() + 2, 1); for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; v.insert(v.end(), 3); for (int i = 0; i < v.size(); ++i) cout << v[i] << " "; cout << endl; return 0; }
erase
#include <iostream> #include <vector> using namespace std; int main() { vector<int> c(5, 123); int i; int temp; cin >> temp; c.push_back(temp); c.insert(c.begin() + 2, 12); // for (i = 0; i < 7; i++) { // cout << c[i] << endl; // } cout << c.empty() << endl; c.erase(c.begin(), c.end()); cout << c.empty() << endl; for (i = 0; i < 7; i++) { cout << c[i] << endl; } return 0; }
这里虽然已经把vector中的数据都清空了,但是最后一个for循环还是会把之前写入的数据输出出来。
函数模板
template <typename 类型参数1, typename 类型参数2, ....>
返回值类型 函数名(参数列表) {
// TODO
}
#include <iostream> using namespace std; template <typename T> void Swap(T *a, T *b) { T temp = *a; *a = *b; *b = temp; } int main() { //交换int 变量的值 int n1 = 100, n2 = 200; Swap(&n1, &n2); cout << n1 << ", " << n2 << endl; //交换char 变量的值 char c1 = ‘A‘, c2 = ‘B‘; Swap(&c1, &c2); cout << c1 << ", " << c2 << endl; return 0; }
类模板
template<typename 类型参数1, typename 类型参数2, …>
class 类名
{
//TODO:
};
ClassName <类型> 对象名:
vector<int> a;
#include <iostream> using namespace std; template <typename T1, typename T2> class Point { private: T1 m_x; T2 m_y; public: Point(T1 x, T2 y) : m_x(x), m_y(y) {} T1 getX() const; void setX(T1 x); T2 getY() const; void setY(T2 y); }; template <typename T1, typename T2> // 模板头 T1 Point<T1, T2>::getX() const { /* 函数头 */ return m_x; } template <typename T1, typename T2> void Point<T1, T2>::setX(T1 x) { m_x = x; } template <typename T1, typename T2> T2 Point<T1, T2>::getY() const { return m_y; } template <typename T1, typename T2> void Point<T1, T2>::setY(T2 y) { m_y = y; } int main() { Point<int, int> p1(10, 20); cout << "x = " << p1.getX() << ". y = " << p1.getY() << endl; Point<int, char *> p2(10, "East longitude 180"); cout << "x = " << p2.getX() << ". y = " << p2.getY() << endl; Point<char *, char *> *p3 = new Point<char *, char *>("East longitude 180", "north latitude 210"); cout << "x = " << p3->getX() << ". y = " << p3->getY() << endl; return 0; }
原文:https://www.cnblogs.com/h-hkai/p/14800739.html