1

在 C 中,我们可以使用以下命令初始化表:

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

我们怎么能用 NTL 向量做这样的事情呢?

我想我已经声明了向量并已经设置了它的长度。

例如:

vec_ZZ vector;

vector.SetLength(3);

谢谢你的帮助。

4

2 回答 2

1

请参阅此处的手册http://www.shoup.net/ntl/doc/vector.txt

我不认为你可以初始化你想要的方式,因为当你声明

Vec<T> v;

它创建一个大小为零的空向量。如果我们必须初始化它,那么您将为其分配另一个向量或设置长度并为其添加值。

Vec<T> v;是一个对象,您只能分配一个对象。可能是您继承 Vec 类并重载运=算符,以便您可以为其分配数组。

于 2014-04-11T12:08:53.793 回答
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
于 2014-04-11T13:52:02.893 回答