LINUX.ORG.RU

[c++] C++0x  и range-based for


0

1
int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
    x *= 2;
}

   Это новый стандарт плюсов, разрешил.

Вопрос: как назначить одному одному вектору все элементы другого используя range-based for?

>Вопрос: как назначить одному одному вектору все элементы другого используя range-based for?

Итератор

anonymous ()

Как-то так

#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<int> v1 = {1, 2, 3, 4, 5};
    std::vector<int> v2(v1.size());

    std::vector<int>::iterator it = v2.begin();

    for(const int& i: v1)
    {
	*it++ = i;
    }

    for(const int& i: v2)
    {
	std::cout << i << std::endl;
    }
    
    return 0;
}

Но зачем?

theNamelessOne ★★★★★ ()
Ответ на: комментарий от Trieforce

но мне интересно как это сделать для векторов с фиксированным размером.

вектор с фиксированным размером - это std::array

theNamelessOne ★★★★★ ()

Вопрос: как назначить одному одному вектору все элементы другого используя range-based for?

Как забить гвоздь валенком?

Pavval ★★★★★ ()
Ответ на: комментарий от anonymous

Как забить гвоздь валенком?

Залить в валенок цемент.

А перед этим в валенок швабру вставить, чтобы рукоятка удобная была.

Нафига пытаться заюзать range-based for для задачи, которую он не должен решать?

Pavval ★★★★★ ()
Ответ на: комментарий от Pavval

> Нафига пытаться заюзать range-based for для задачи, которую он не должен решать?

Не знаю. Это было петросянство в отрыве от контекста задачи ТС.

anonymous ()
Ответ на: Как-то так от theNamelessOne

> std::vector<int>::iterator it = v2.begin();

если уж юзать C++11, то «auto it = v2.begin();»

aho ()
Ответ на: Как-то так от theNamelessOne

Отличное спортивное состязание! Надо в код добавить еще больше range-based for!!! Главное - юзать новый стандарт.

А так пусть пишут лузеры:

std::vector<int> a = {1, 2, 3, 4, 5};
std::vector<int> b;

b.assign(a.begin(), a.end());
Pavval ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.