В 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