实际上,您正在尝试同时使用两个构造函数初始化std::vector<std::string>
类型的对象。
第一个构造函数如下
explicit vector(size_type n,const Allocator& = Allocator());
第二个构造函数是
vector(initializer_list<T>,const Allocator& = Allocator());
这没有道理。
您始终可以通过使用其成员函数size
获得向量中元素的数量。而且,您始终可以使用向量resize
来调整向量的大小。
此外,您可以在不需要知道元素数量的情况下使用基于范围的for循环。
所以只要写
vector<string>possiblePalindromes =
{ "A man a plan a canal Panama","The rain in Spain","No lemon,no melon","radar","CS1D","Was it a cat I saw?","Racecar","Saddleback","dad" };
这是一个演示程序
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> possiblePalindromes =
{
"A man a plan a canal Panama","dad"
};
std::cout << "The vecor contains " << possiblePalindromes.size() << " elements\n";
std::cout << "They are:\n";
for ( const auto &s : possiblePalindromes )
{
std::cout << '\t' << s << '\n';
}
return 0;
}
其输出为
The vecor contains 9 elements
They are:
A man a plan a canal Panama
The rain in Spain
No lemon,no melon
radar
CS1D
Was it a cat I saw?
Racecar
Saddleback
dad
,
或者,如果您想要恒定大小,则可以改用std::array
(请注意,大小是模板参数,例如std::string
,而不是()
中传递):
const int SIZE = 9;
std::array<std::string,SIZE> possiblePalindromes =
{ "A man a plan a canal Panama","dad" };
,
因为已经给出了矢量对象的一个积分参数初始化,即。它的大小,避免了矢量值的初始化。
一次只能声明一个。
这对您有帮助
const int SIZE = 9;
vector<string>possiblePalindromes = //
{ "A man a plan a canal Panama","dad" };
possiblePalindromes.resize(SIZE); // decides the size now
for (int i = 0; i < SIZE; ++i)
// ...
本文链接:https://www.f2er.com/2749809.html