先决条件–矢量基础
以下是一些重要的观点,可以节省在面试或重要的编码竞赛中花费很少的时间。
- 向量
vect(10)与向量 vect [10] // Creates a vector vect[] of size 10 vector
vect(10) // creates an array of vectors vect[] of size // 10 where each vector has int members vector vect[10] - resize()和push_back():
在向量上使用了resize()函数之后,如果在同一向量上使用了push_back(),则被推回的元素将添加到调整大小后的向量的末尾,而不是添加到该向量中。// A C++ program to demonstrate that push_back() // happens at the end of resized vector. #include
using namespace std; int main() { vector vect; for (int i = 0; i < 5; i++) vect.push_back(i); // Resizing vector to size 10 vect.resize(10); // Prints 0 1 2 3 4 0 0 0 0 0 for (int i = 0; i < vect.size(); i++) cout << vect[i] << " "; cout << "\n"; vect.push_back(50); // Prints 0 1 2 3 4 0 0 0 0 0 50 for (int i = 0; i < vect.size(); i++) cout << vect[i] << " "; return 0; } Output: 0 1 2 3 4 0 0 0 0 0 0 1 2 3 4 0 0 0 0 0 50
- clear()函数它使向量具有零个元素,即-没有元素且所有元素都不为全0。
- 创建二维向量
// This doesn't work vector
> vect; // This works fine vector< vector > vect; 这两个语句之间的区别在于,第一个语句在尖括号(>>)之间有一个空格。没有空格的书写不起作用,因为>>是C++中的运算符。
- 将向量传递给函数:
将向量简单地传递给函数,将创建向量的副本。在大向量的情况下,这可能会花费很多时间。// C++ program to demonstrate that when vectors // are passed to functions without &, a copy is // created. #include
using namespace std; // The vect here is a copy of vect in main() void func(vector vect) { vect.push_back(30); } int main() { vector vect; vect.push_back(10); vect.push_back(20); func(vect); // vect remains unchanged after function // call for (int i=0; i 输出 :
10 20
在实际上不需要矢量的副本的情况下,声明应如下所示:
// It is recommended to pass vectors by reference // wherever possible. int func(vector
& vect) { }
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。