Итератор для ветора в векторе

163
05 марта 2019, 16:30

Имеем вектор vector<vector<string>> all; в него пихем

vector<string> a = {"+","Znak orifmeticheskoy operacii",g};
         all.push_back(a);

Используя такой итератор как мне обращаться к столбцам конкретной строки? нужно реализовать поиск по первому столбцу.

vector<vector<string>>::iterator it;
for (it=all.begin();it!=all.end();it++){
    std::cout<<&it <<" ";}

И как сделать вывод в нормальном формате(string) а не в &it(результат 0x8ec880)? и все это в QT.

Answer 1

Используя такой итератор как мне обращаться к столбцам конкретной строки?

for (auto it : all) {
    const auto& nested_vector = *it;
    for (auto it_n : nested_vector) {
        // do smth
    } 
    // UPD: const auto elm = nested_vector[i];
}

Еще пример:

#include <string>
#include <vector>
#include <iostream>
#include <cassert>
using col_t = std::string;
using row_t = std::vector<col_t>;
using mrx_t = std::vector<row_t>;
int main() {
    const mrx_t mrx = {
        { "+", "add", "..." },
        { "-", "sub", "..." },
        { "*", "mul", "..." },
        { "/", "div", "..." }
    };

    for (mrx_t::size_type i = 0; i < mrx.size(); ++i) {
        const row_t& row = mrx[i];
        for (row_t::size_type j = 0; j < row.size(); ++j) {
            if (i > 0 && mrx[i - 1][0] == "+" && i <= mrx.size() - 1 && mrx[i + 1][0] == "*") {
                assert(mrx[i][0] == "-");
            }
        }
    }
}
Answer 2

cout не умеет выводить vector. Нужно вывести первый элемент вектора.

vector<vector<string>>::iterator it;
for (it=all.begin();it!=all.end();it++){
    std::cout << it[0] << " ";
}

В вашем случае стоит рассмотреть использования QMap т.к. vector не очень подходит, если нужно производить по нему поиск.

QMap<QString, QStringList> all;
QStringList a;
a.append("Znak orifmeticheskoy operacii");
a.append(g);
all["+"] = a;
...
if (all.contains("+")){
    cout << all["+"].join(" ").toStdString;
}
READ ALSO
c++ friend методы

c++ friend методы

Я хочу открыть методу класса B полный доступ к приватным членам класса A, но получаю от компилятора непонятное сообщение об ошибке

147
Получения IP адреса и порта по имени хоста

Получения IP адреса и порта по имени хоста

Как узнать IP адрес и порт, имея хост?

159
Живой элемент на layout

Живой элемент на layout

Реализовать примерно следующее: 1На layout добавить графический элемент (дым) 2

168
Подкиньте парсер 3d-моделей из blender в LWJGL 3

Подкиньте парсер 3d-моделей из blender в LWJGL 3

Собственно, вопрос в заголовкеДля написания собственного парсера моих знаний пока не хватает (В Java, как и в самой среде LWJGL я довольно недавно)

172