назначающий вектор - PullRequest
0 голосов
/ 29 декабря 2010

как я могу присвоить v [i] серии целых чисел (тип v - вектор) без начального заполнения внутри

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Вы имеете в виду инициализацию std :: vector последовательностью целых чисел?

int i[] = {1, 2, 3, 4, 5};
std::vector<int> myVector(i, i+ (sizeof(i)/sizeof(int)));

Если вы намеревались создать вектор некоторых элементов, чтобы вы могли выполнить присваивание, используя их значения индекса.Здесь следующее утверждение объявляет и инициализирует вектор с его элементами по умолчанию, инициализированными равными 0.

std::vector<int> myVector(5); // constructs a vector of size five integers.

for (int x = 0; x < 5; x++)
    myVector[x] = i[x];     // assign values using subscript [..] 

Но я думаю, что еще лучший способ сделать это - @CashCow, упомянутый в его ответе.

Также обратите внимание, что вы также можете предварительно выделить память для добавления элементов в вектор, избегая повторных выделений памяти.

Например:

std::vector<int> myVector; // empty vector for integers
myVector.reserve(5); // pre-allocates memory for five integers

for (int i = 0; i < 5; i++) // now, you can add your elements
    myVector.push_back(i);

Обычно это хорошоИдея предварительно выделить память, если вы знаете размер элементов, т.е. в случае большого количества элементов, когда производительность является важным фактором.

2 голосов
/ 29 декабря 2010

Если у вас есть что-то, что имеет черты итератора, вы можете использовать метод присвоения вектора:

std::vector<int> v;
v.assign( iterStart, iterEnd );
  • iterStart должно быть таким, чтобы * iterStart было первым значением, которое вы хотите добавить.
  • iterEnd должен быть один за концом, это завершающее условие
  • ++ iter переместит вас к следующему итератору в серии ввода.

Я не знаю, что вы подразумеваете под присвоением v [i]. Вы не можете назначить элемент серии. Если вы хотите записать серию в каком-либо месте в существующий вектор, вы можете использовать insert вместо assign.

1 голос
/ 29 декабря 2010

Обычным способом добавления элементов является вызов метода std :: vector <> push_back ().

std::vector<int> myVector;
myVector.push_back(5);
myVector.push_back(10);
myVector.push_back(3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...