Проверьте, является ли итератор последним в списке - PullRequest
0 голосов
/ 06 октября 2018

Я создал этот итератор для просмотра списка портов.Я хочу добавить запятые для каждого порта, за исключением последнего порта.Чтобы сделать это, я подумал, что могу протестировать it == ( verilogPorts.end() - 1), который, кажется, работает .....

Должен ли я использовать VerilogPort.size () или что-то другое, кроме verilogPorts.end () - 1?
Кажется, что -1 - это потенциальная проблема.

 for (std::list<VerilogPort>::iterator it = verilogPorts.begin(); it != verilogPorts.end(); ++it) {
        add_comma = (it == (verilogPorts.end() - 1));
        if (port_section != "") {
            port_section = port_section + "/n";
        }
        port_section = port_section  + it->get_port_string_and_comment(add_comma);
    } 

1 Ответ

0 голосов
/ 06 октября 2018

Хорошо, так что решил, как это с помощью функции расстояния.Относительно комментария выше о некомпиляции.Я подтвердил, что в файле Makefile возникла проблема, и после ошибки оставался устаревший исполняемый файл.Я действительно не знаю, если это «хорошее» решение, чтобы нет.

for (std::list<VerilogPort>::iterator it = verilogPorts.begin(); it != verilogPorts.end(); ++it) {
            add_comma = (std::distance(it, verilogPorts.end()) != 1);
            if (port_section != "") {
                port_section = port_section + "\n";
            }
            port_section = port_section  + it->get_port_string_and_comment(add_comma);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...