【发布时间】:2015-10-07 10:44:22
【问题描述】:
如此基本,但我很难在 Google 中搜索。
我在网上做一个C++培训课程,题目是STL;在这种情况下vector。
是否可以在不指定类型的情况下实例化vector?
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector v1(10, 0);
cout<<"Size: "<<v1.size()<<endl;
for(unsigned i = 0; i < v1.size(); ++i)
{
cout<< v1[i]<<" ";
}
cout<<endl;
return 0;
}
我认为这是错误的,但我在整个课程中都看到了这一点,这让我感到困惑。
当使用vector<int> v1(10, 0) 时,它会编译,我认为应该是这样的。
在我们使用 NetBeans 的课程中,但我认为没有配置或参数或任何东西可以实现这一点,是吗?
【问题讨论】:
-
不,这不可能,你必须指定类型。
-
不,您不能从构造函数中推断出类模板参数。有一些关于这种功能的提议,但它们引起了很大的争议。
-
你可以有一个别名来编译上面的代码。(例如 typedef std::vector
vector;)但我怀疑这不是你要问的。 -
你用一个 boost::any 我猜想把它装满,但这几乎不一样......
-
理论上,您可以通过
using vector = std::vector<int>;定义别名,然后使用vector而不是std::vector<int>。但它不适用于您的情况,因为它会与using namespace std;产生歧义。但是你可以说using numbervector = std::vector<int>;或者你喜欢怎么称呼它。