在C中,我们可以用以下内容初始化表:
int array[3]={1,2,3};
我们怎么能用NTL载体做这样的事情?
我想我已经声明了矢量并且已经设定了它的长度。
例如:
vec_ZZ vector;
vector.SetLength(3);
感谢您的帮助。
答案 0 :(得分:1)
请参阅此处的手册http://www.shoup.net/ntl/doc/vector.txt
我不认为您可以初始化您想要的方式,因为当您声明
时Vec<T> v;
它创建一个大小为零的空向量。如果我们必须初始化它,那么你将为它分配另一个向量或设置一个长度并为其添加值。
Vec<T> v;
是一个对象,您只能分配一个对象。可能是您继承了Vec类并重载=
运算符,以便您可以为其分配数组。
答案 1 :(得分:1)
正如我在之前的回答中所提到的,你可以继承Vec类,如下所示。
using namespace NTL;
class MyVec : public Vec<int>
{
public:
MyVec(std::initializer_list<int> input);
};
MyVec::MyVec(std::initializer_list<int> input)
{
int n = input.size();
this->SetLength(n);
std::vector<int> v;
v.insert(v.end(), input.begin(), input.end());
for(int i=0; i<n; i++)
this->put(i, v[i]);
}
int main()
{
MyVec v = {1,2,3};
for(int i=0; i<v.length(); i++)
cout << v[i] << " ";
return 0;
}
编译时不要忘记使用C ++ 11标志..
我使用ubuntu env并使用以下
g++ -std=c++11 test.cpp -l ntl