. Я решал задачу программирования, которая хочет найти СИММЕТРИЧНУЮ РАЗНИЦУ между двумя множествами. Я решил это с помощью STL set_symmetric_difference
. Мне даны два vector<int>s
, A
иB
:
A = {342,654,897,312,76,23,78}
B = {21,43,87,98,23,756,897,234,645,876,123}
Должен вернуться (правильный ответ):
{ 21,43,76,78,87,98,123,234,312,342,645,654,756,876 }
Но я получаю:
{ 21,43,76,78,87,98,123,234,312,342,645,65,756,876}
В чем проблема ? Вот мой код:
sort(A.begin(), A.end());
sort(B.begin(), B.end());
// allocate the smallest size of A,B as maximum size
vector<int> c(A.size() < B.size() ? B.size() : A.size());
vector<int>::iterator i;
i = set_symmetric_difference(A.begin(), A.end(), B.begin(), B.end(), c.begin());
return vector<int>(c.begin(), i);
ПРИМЕЧАНИЕ: Я получаю правильные ответы на остальные примеры. Этот пример дает мне только этот неправильный ответ.
Я протестировал его в Visual Studio и получил сообщение об ошибке :«Итератор не увеличивается»
-. 121 ---849180-У меня есть следующий код:
{% for item in profile.jobs.all %}
{% if not forloop.first %}, {% endif %}{{ item }}
{% endfor %}
Что дает что-то вроде следующего:
"Programmer, Plumber, Philosopher"
Мне не нужен начальный пробел перед запятой, но единственный способ избавиться от него — сжать его в одну строку, что снижает читабельность:
{% for item in profile.jobs.all %}{% if not forloop.first %}, {% endif %}{{ item }}{% endfor %}
Есть ли лучший способ справиться с этим?