Набор STL _симметричный _разностное использование

. Я решал задачу программирования, которая хочет найти СИММЕТРИЧНУЮ РАЗНИЦУ между двумя множествами. Я решил это с помощью 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- Приложение для iPhone отклонено из-за рекомендаций по хранению данных iCloud Критическое исправление ошибки в одном из моих приложений недавно было отклонено из-за предполагаемого нарушения рекомендаций по хранению данных iCloud. Вот то, как мое приложение хранит данные (, не было проблемой с тех пор, как...

Критическое исправление ошибки в одном из моих приложений недавно было отклонено из-за предполагаемого нарушения рекомендаций по хранению данных iCloud.

Вот то, как мое приложение хранит данные (не было проблемой с тех пор, как первая версия моего приложения была одобрена в 2009 году):

  1. При запуске он копирует «стартовую» базу данных SQLite3 из комплекта приложений в папку «Документы».
  2. База данных содержит базовую схему и некоторые примеры данных, чтобы пользователь мог увидеть, как использовать приложение. Он маленький -чуть меньше 3 МБ.
  3. После этого дальнейшая работа пользователя сохраняется только в этом файле базы данных. Они могут удалить или сохранить образцы, они могут добавить тонны своих данных, но этот файл базы данных всегда будет там.

Обновление ранее в этом году было отклонено по той же причине, но когда я дал им объяснение выше,статус приложения изменился с «Отклонено» на «На рассмотрении» и «В обработке для App Store». Они не прислали мне никаких объяснений, поэтому я подумал, что это просто недоразумение со стороны рецензента.

На этот раз рецензент ответил на мое объяснение, просто сказав, что данные, сгенерированные не -пользователем -, не должны храниться в iCloud, а мое обновление остается в состоянии «Отклонено».

Но я не понимаю, что я должен здесь делать. Поскольку вся работа пользователя хранится в базе данных, я не могу исключить ее из резервной копии iCloud или сохранить в папке Cache. Кроме того, я не могу четко отделить «сгенерированные пользователем -» данные «не -сгенерированные пользователем -», потому что приложение работает с одним и тем же файлом базы данных. Исходные данные, созданные не -пользователем -, будут быстро заменены собственными данными пользователя, хотя имя файла и расположение каталога базы данных останутся прежними.

И даже если в базе данных не было демонстрационных данных, любое приложение, поддерживаемое базой данных -, все равно должно будет создать пустую базу данных при запуске -, даже если единственное, что оно содержит, — это схема базы данных приложения.

Это должно быть очень распространенная проблема, но, к сожалению, я не могу просто отключить резервное копирование -пользователи вкладывают много труда в данные, которые они хранят в моем приложении, и резервное копирование iCloud очень важно для них.

Какие варианты у меня есть на данный момент? Вот что я вижу:

  1. Свяжитесь с Apple еще раз и попытайтесь объяснить, что происходит.

  2. Могу ли я установить для атрибута резервного копирования файла значение НЕТ, а затем переключать его на ДА только тогда, когда пользователь вносит свое первое изменение? Это нормально с технической точки зрения и с Apple?

  3. Удалите данные моего примера из базы данных. Это будет очень плохо для удобства использования и увеличит мою нагрузку на поддержку, но я готов это сделать, если мое обновление будет одобрено. Однако мне все равно придется создавать базу данных-заглушку при запуске, чтобы содержать пустую схему базы данных,так что я не уверен, что это даже повлияет на процесс утверждения.

  4. Плакать.

У кого-нибудь есть совет? Я должен представить, что есть много других приложений, которые используют базу данных так же, как и мое, но не имеют возможности просто отключить резервное копирование.

Также очень удручает то, что любые изменения, которые я делаю, потребуют еще одного раунда тестирования и проверки приложения, что отсрочит мое критическое обновление еще на 2 -3 недели. :/

ОБНОВЛЕНИЕ:Может есть еще вариант :может просто сохранить файл в Library/вместо Documents/, так как у них проблема видимо именно с использованием папки "Документы"? Будет ли сохранена резервная копия файла, если он хранится в Library/?

ОБНОВЛЕНИЕ 2:Больше всего меня сбивает с толку то, что любое приложение, поддерживаемое базой данных -(, даже если оно использует Core Data, я предполагаю, что )придется создать файл базы данных, содержащий как минимум схему приложения. Проблема только в том, что размер моей базы данных слишком велик? Потому что я не понимаю, как любое приложение с поддержкой базы данных -может избежать необходимости создавать базу данных при запуске.

ОБНОВЛЕНИЕ 3:Я использую пользовательский слой взаимодействия SQLite -, а не Core Data. Кроме того, данные примера состоят из начальных изображений, которые пользователь, вероятно, в конечном итоге удалит, когда начнет использовать приложение.

18
задан pnuts 26 November 2015 в 09:34
поделиться