如何一次初始化NTL向量?

时间:2014-04-11 11:54:12

标签: c++ c ntl

在C中,我们可以用以下内容初始化表:

int array[3]={1,2,3};

我们怎么能用NTL载体做这样的事情?

我想我已经声明了矢量并且已经设定了它的长度。

例如:

vec_ZZ vector;

vector.SetLength(3);

感谢您的帮助。

2 个答案:

答案 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