C ++: массив в кортеже в векторе - как обращаться к элементам массива и как сортировать вектор - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть такая настройка.

std::vector<std::tuple<std::array<int,64>,int>> frequentLines;

Есть вектор с кортежами. Каждый кортеж состоит из массива 64 дюймов и другого целого, представляющего частоту каждого массива.

Мой первый вопрос: как мне обратиться к элементам массива?

Я знаю, что когда у вас есть массив в кортеже, у вас будет что-то вроде этого.

for (uint i=0; i<64; i++) {     
    get<1>(foo)[i]
}

Я не уверен, как обращаться к элементам массива, имея все в векторе.

Я пытался

for (uint i=0; i<frequentLines.size(); i++) {
    for (int j=0; j<64; j++) {
        std::get<0>(frequentLines)[i][j]
    }
}

но это не работает.

Мой второй вопрос: какой будет эффективный способ сортировки этого вектора по частоте каждого массива целых чисел (т. Е. По второму элементу (int) кортежа)?

1 Ответ

1 голос
/ 30 апреля 2019

Используйте std::get<0>(frequentLines[i])[j] в вашем цикле и sort(frequentLines.begin(),frequentLines.end(),[](std::tuple<std::array<int,64>,int> &a, std::tuple<std::array<int,64>,int>& b) { return std::get<1>(a)<std::get<1>(b); }).

...