📅  最后修改于: 2020-09-04 08:34:40             🧑  作者: Mango
Vector是一个基于模板的容器,其行为类似于动态数组。它可以在运行时扩展其内存,并始终像Array一样将元素存储在连续的内存位置。
通过将类型指定为模板参数,我们可以将任何类型的元素存储在vector中。
#include
#include
int main()
{
// This is a vector of int
std::vector vecOfInts;
// While Adding it automatically adjusts it's size
for(int i = 0; i < 10; i++)
vecOfInts.push_back(i);
std::vector::iterator it = vecOfInts.begin();
while(it != vecOfInts.end())
{
std::cout<<*it<<" , ";
it++;
}
std::cout<
std :: vector在索引和迭代方面具有与数组相同的快速性能,但是它没有像数组这样的固定大小限制;您无需事先为std :: vector提供固定大小。只需开始在std :: vector中插入元素,它将自动扩展其大小。
创建没有任何初始化的矢量对象将创建一个没有元素的空矢量,即std :: vector < int > vecOfInts;
但是,上述方法,如果频繁调用push_back()向vector添加大量元素,并不是一种有效且智能的解决方案。因此,让我们讨论如何以不同的方式初始化vector。
Vector接受大小作为参数的构造函数,并使用默认值初始化.
// Initialize vector with 5 integers
// Default value of all 5 ints will be 0.
std::vector vecOfInts(5);
for(int x : vecOfInts)
std::cout<
这种方式,Vector所有元素全为0;。
//将向量初始化为5个具有“ Hi"值的字符串对象
std :: vector < std :: string > vecOfStr (5,“ Hi" );
为(std :: string str:vecOfStr )
std :: cout << str << std :: endl;
这种方式,Vector所有元素全为字符串“Hi”。
std::string arr[] = {"first", "sec", "third", "fourth"};
// Initialize vector with a string array
std::vector vecOfStr(arr, arr + sizeof(arr)/sizeof(std::string));
for(std::string str : vecOfStr)
std::cout<
// Create an std::list of 5 string objects
std::list listOfStr;
listOfStr.push_back("first");
listOfStr.push_back("sec");
listOfStr.push_back("third");
listOfStr.push_back("fouth");
// Initialize a vector with std::list
std::vector vecOfStr(listOfStr.begin(), listOfStr.end());
for(std::string str : vecOfStr)
std::cout<
std::vector vecOfStr;
vecOfStr.push_back("first");
vecOfStr.push_back("sec");
vecOfStr.push_back("third");
// Initialize a vector with other string object
std::vector vecOfStr3(vecOfStr);