我想弄乱一下,std::array
看看它与std::vector
. 到目前为止,我只发现了一个主要区别。
Sentence sentence = { "Hello", "from", "GCC", __VERSION__, "!" };
std::array<std::string, 10> a;
std::copy(sentence.begin(), sentence.end(), a.begin());
int i = 0;
for (const auto& e : a)
{
i++;
std::cout << e << std::endl;
}
std::cout << i << std::endl;
// outputs 10
i = 0;
for (const auto& e : sentence)
{
i++;
std::cout << e << std::endl;
}
std::cout << i << std::endl;
// outputs 5
for (int i = 0; i < a.size(); i++)
std::cout << i << " " << a[i] << std::endl;
// outputs 0 Hello
// ...
// 4 !
// 5-9 is blank
for (int i = 0; i < sentence.size(); i++)
std::cout << i << " " << sentence[i] << std::endl;
// outputs 0 Hello
// ...
// 4 !
// stops here
// The following outputs the same as above
i = 0;
for (auto it = a.begin(); it != a.end(); it++)
{
std::cout << i << " " << *it << std::endl;
i++;
}
std::cout << i << std::endl;
i = 0;
for (auto it = sentence.begin(); it != sentence.end(); it++)
{
std::cout << i << " " << *it << std::endl;
i++;
}
std::cout << i << std::endl;
所以从我所见,std::array
's size
andmax_size
是多余的,但是std::vector
's size
andcapacity
可以不同或相同。这甚至从这句话中得到证实:
数组对象的 size 和 max_size 始终匹配。
那么为什么std::array
会有冗余尺寸功能呢?更重要的是,您是否会认为它std::array
的大小不一定与std::vector
的大小相同,因为向量具有容量?此外,这是否意味着std::array
s 是安全的(即,它们是否像向量一样具有智能指针管理?)