2542 / 1201 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
1

Инициализация std vectora

06.05.2015, 22:54. Показов 992. Ответов 5
Метки нет (Все метки)

Добрый вечер,

как в VS 2008 студии (нету с++ 11) "красиво" проинициализировать вектор векторов не используя массив?

вариант с массивом - наглядно красиво редактируемо
C++
1
2
3
4
5
int arr[][7] =
    {
        {1, 2, 3, 4, 1, 1, 1},
        {2, 3, 1, 2, 3, 4, 1}
    };
вариант с контейнером std::vector
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
std::vector<std::vector<int>> arr2;
    std::vector<int> a;
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);
    a.push_back(4);
    a.push_back(1);
    a.push_back(1);
    a.push_back(1);
 
    arr2.push_back(a);
 
    std::vector<int> b;
    b.push_back(2);
    b.push_back(3);
    b.push_back(1);
    b.push_back(2);
    b.push_back(3);
    b.push_back(4);
    b.push_back(1);
 
    arr2.push_back(b);
 
    cout << arr2[1][2] << endl;




в
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 22:54
Ответы с готовыми решениями:

Инициализация std::ifstream
Пишу простой логер. Хотелось бы открыть файл, а потом использовать std::ifstream для записи....

Инициализация std::set
Как наиболее грамотно инициализировать std::set &lt;std::pair &lt;std::string, std::string&gt; &gt; значениями,...

Инициализация std::atomic_int
Проблемы с инициализацией переменной класса var, ведает ошибки use of deleted function...

Инициализация std::tuple переменным числом аргументов
Добрый вечер. Мне нужно инициализировать объект std::tuple, который является членом некоторого...

5
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
06.05.2015, 22:59 2
std::copy().
0
1378 / 405 / 144
Регистрация: 22.10.2014
Сообщений: 872
06.05.2015, 23:00 3
Никак )))) Это одна из проблем С98.
1
1453 / 790 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.05.2015, 23:35 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int arr1[] = {1, 2, 3, 4, 1, 1, 1};
    int arr2[] = {2, 3, 1, 2, 3, 4, 1};
 
    std::vector<std::vector<int> > arr3;
    std::vector<int> a(arr1, arr1 + sizeof arr1 / sizeof arr1[0]);
    arr3.push_back(a);
 
    std::vector<int> b(arr2, arr2 + sizeof arr2 / sizeof arr2[0]);
    arr3.push_back(b);
 
    std::cout << arr3[1][2] << std::endl;
}
0
2542 / 1201 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
06.05.2015, 23:41  [ТС] 5
Цитата Сообщение от DiffEreD Посмотреть сообщение
int arr1[] = {1, 2, 3, 4, 1, 1, 1};
* * int arr2[] = {2, 3, 1, 2, 3, 4, 1};
дальше не читал)))
0
1367 / 590 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
07.05.2015, 03:21 6
Незачем 2 массива, когда можно 1, а так да, нельзя напрямую., только через костыли (до С++11)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
 
 
 
int main(){
    setlocale(LC_ALL,"");
    int arr[][7] =
    {
        {1, 2, 3, 4, 1, 1, 1},
        {2, 3, 1, 2, 3, 4, 1}
    };
 
   vector<int> v(arr[0],arr[sizeof(arr)/sizeof(arr[0])]);
 
   copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
 
}
Добавлено через 2 минуты
невнимательно прочитал

Добавлено через 1 час 52 минуты
Вариант "стиль Паскаля"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 vector< vector<int> > vec;
 
vec.resize(2);
for (int i=0, size=vec.size(); i<size; ++i)   vec[i].resize(7);
 
vec[0][0]=0;    vec[1][0]=10;
vec[0][1]=1;    vec[1][1]=20;
vec[0][2]=2;    vec[1][2]=30;
vec[0][3]=3;    vec[1][3]=40;
vec[0][4]=0;    vec[1][4]=50;
vec[0][5]=1;    vec[1][5]=60;
vec[0][6]=2;    vec[1][6]=70;
 
 
for (vector< vector<int> >::iterator it=vec.begin();it!=vec.end();it++){
    copy((*it).begin(),(*it).end(),ostream_iterator<int>(cout," "));
    cout<<"\n";
}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2015, 03:21

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Инициализация статического члена std::vector в шаблонном классе
есть класс myclass , владеющий классом struct template&lt;class T&gt; class myclass { struct...

Неправильное возращения vectora'a из функции
Не могу понять, что не так. если внутри функции обращаться к вектору ,то все ок. Возвращаеться...

Агрегатная инициализация std::array в сочетании с "new"
Можно ли сочетать агрегатную инициализацию контейнера STL с динамическим его созданием с помощью...

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.