在 C 中,我们可以使用以下命令初始化表:
int array[3]={1,2,3};
我们怎么能用 NTL 向量做这样的事情呢?
我想我已经声明了向量并已经设置了它的长度。
例如:
vec_ZZ vector;
vector.SetLength(3);
谢谢你的帮助。
请参阅此处的手册http://www.shoup.net/ntl/doc/vector.txt
我不认为你可以初始化你想要的方式,因为当你声明
Vec<T> v;
它创建一个大小为零的空向量。如果我们必须初始化它,那么您将为其分配另一个向量或设置长度并为其添加值。
Vec<T> v;
是一个对象,您只能分配一个对象。可能是您继承 Vec 类并重载运=
算符,以便您可以为其分配数组。
正如我在之前的回答中提到的,您可以继承 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