Я часто сталкиваюсь с ситуацией, когда мне нужно каким -то образом сообщить о том, что поиск предмета потерпел неудачу. Поскольку есть много способов, как справиться с такой ситуацией, я всегда не уверен, как это сделать. Вот несколько примеров: < /p>
class ItemCollection
{
public:
// Return size of collection if not found.
size_t getIndex(Item * inItem)
{
size_t idx = 0;
for (; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
return idx;
}
// Use signed int and return -1 if not found.
int getIndexV2(Item * inItem)
{
for (int idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
return -1;
}
// Throw exception if not found.
size_t getIndexV3(Item * inItem)
{
for (size_t idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
throw std::runtime_error("Item not found");
}
// Store result in output parameter and return boolean to indicate success.
bool getIndex(Item * inItem, size_t & outIndex)
{
for (size_t idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
outIndex = idx;
return true;
}
}
return false;
}
private:
std::vector mItems;
};
< /code>
Я использовал все это в какой -то момент в моем (молодого) программировании Carreer. Я в основном использую подход «Возврат размера коллекции», потому что он похож на то, как работают итераторы STL. Тем не менее, я хотел бы сделать более образованный выбор в будущем. Итак, на каких принципах дизайна должно быть основано на решении о том, как справиться с не облегающими ошибками?
Подробнее здесь: https://stackoverflow.com/questions/197 ... d-function
Как справиться с «элементом, не найденным» ситуациями в функции поиска? ⇐ C++
Программы на C++. Форум разработчиков
1741869058
Anonymous
Я часто сталкиваюсь с ситуацией, когда мне нужно каким -то образом сообщить о том, что поиск предмета потерпел неудачу. Поскольку есть много способов, как справиться с такой ситуацией, я всегда не уверен, как это сделать. Вот несколько примеров: < /p>
class ItemCollection
{
public:
// Return size of collection if not found.
size_t getIndex(Item * inItem)
{
size_t idx = 0;
for (; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
return idx;
}
// Use signed int and return -1 if not found.
int getIndexV2(Item * inItem)
{
for (int idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
return -1;
}
// Throw exception if not found.
size_t getIndexV3(Item * inItem)
{
for (size_t idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
return idx;
}
}
throw std::runtime_error("Item not found");
}
// Store result in output parameter and return boolean to indicate success.
bool getIndex(Item * inItem, size_t & outIndex)
{
for (size_t idx = 0; idx != mItems.size(); ++idx)
{
if (inItem == mItems[idx])
{
outIndex = idx;
return true;
}
}
return false;
}
private:
std::vector mItems;
};
< /code>
Я использовал все это в какой -то момент в моем (молодого) программировании Carreer. Я в основном использую подход «Возврат размера коллекции», потому что он похож на то, как работают итераторы STL. Тем не менее, я хотел бы сделать более образованный выбор в будущем. Итак, на каких принципах дизайна должно быть основано на решении о том, как справиться с не облегающими ошибками?
Подробнее здесь: [url]https://stackoverflow.com/questions/1970316/how-to-handle-item-not-found-situations-in-a-find-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия