先决条件—— 矢量基础
null
以下是一些要点,可以在面试或重要的编码竞赛中节省时间。
- 向量
vect(10)与向量 vect[10] // Creates a vector vect[] of size 10 vector <int> vect(10) // creates an array of vectors vect[] of size // 10 where each vector has int members vector<int> vect[10]
- 调整大小()并向后推() 在向量上使用resize()函数后,如果在同一向量上使用push_back(),则被推回的元素将添加到已调整大小的向量的末尾,而不是添加到该向量中。
// A C++ program to demonstrate that push_back()
// happens at the end of resized vector.
#include<bits/stdc++.h>
using
namespace
std;
int
main()
{
vector<
int
> 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 <<
""
;
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<vector<int>> vect; // This works fine vector< vector <int> > vect;
这两条语句之间的区别在于,第一条语句在尖括号(>>)之间有一个空格。没有空间的书写是不起作用的,因为>是C++中的一个运算符。
- 将向量传递给函数: 当一个向量被简单地传递给一个函数时,就会创建一个向量的副本。在大向量的情况下,这可能需要很多时间。
// C++ program to demonstrate that when vectors
// are passed to functions without &, a copy is
// created.
#include<bits/stdc++.h>
using
namespace
std;
// The vect here is a copy of vect in main()
void
func(vector<
int
> vect)
{
vect.push_back(30);
}
int
main()
{
vector<
int
> vect;
vect.push_back(10);
vect.push_back(20);
func(vect);
// vect remains unchanged after function
// call
for
(
int
i=0; i<vect.size(); i++)
cout << vect[i] <<
" "
;
return
0;
}
输出:
10 20
在我们实际上不需要矢量副本的情况下,声明应如下所示:
// It is recommended to pass vectors by reference // wherever possible. int func(vector<int>& vect) { }
本文由 苏皮娅·施里瓦萨 .如果你喜欢GeekSforgek,并且想贡献自己的力量,你也可以写一篇文章,并将文章邮寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END