Как инициализировать вектор NTL за один раз?

В C мы можем инициализировать таблицу с помощью:

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

Как мы можем сделать такую ​​вещь с векторами NTL?

Я предполагаю, что объявил вектор и уже установил его длину.

Например:

vec_ZZ vector;

vector.SetLength(3);

Спасибо за вашу помощь.

1

Решение

Смотрите руководство здесь http://www.shoup.net/ntl/doc/vector.txt

Я не думаю, что вы можете инициализировать так, как вы хотите, потому что, когда вы объявляете

Vec<T> v;

Создает пустой вектор нулевого размера. Если мы должны инициализировать его, вам нужно будет назначить ему другой вектор или задать длину и добавить значения к нему.

Vec<T> v; является объектом, и вы можете назначить только объект. Может быть, вы наследуете класс Vec и перегружаете = оператор, так что вы можете назначить массив для него.

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
1

По вопросам рекламы [email protected]