Что преимущество к ограничению бросков, позволенных функцией C++? [закрытый]

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

Вы можете указать цветовую гамму, как и любую другую эстетику. В частности, scale_color_manual позволяет вам задавать вектор строк, определяющий используемые цвета.

Таким образом, вы можете добавить в конце:

scale_color_manual(values = c('orange', 'yellow', 'black', 'grey'))

Вы хотите отобразить определенный цвет для каждого возможного уровня, вы можете дать ему названный вектор:

  scale_color_manual(values = c(Q4 = 'orange', Q2 = 'yellow', Q1 = 'black', Q3 = 'grey'))
11
задан casperOne 12 January 2013 в 15:54
поделиться

4 ответа

Никто не объясняет это лучше, чем Sutter

http://www.ddj.com/architect/184401544

Короткая версия

  1. Никогда не пишите спецификацию исключения
  2. Кроме возможно пустого
22
ответ дан 3 December 2019 в 03:19
поделиться

Стандарт C++ требует что unexpected() функция вызвана, если функция пытается выдать исключение, которое не находится в его списке исключений. Краткое описание этого из MSDN здесь: http://msdn.microsoft.com/en-us/library/awbt5tew (По сравнению с 80) .aspx

Большинство компиляторов на самом деле не поддерживает эту функцию C++.

5
ответ дан 3 December 2019 в 03:19
поделиться
void do_something() throw(); 

Это - гарантия со стороны реализатора, что функция никогда не будет выдавать исключение. Именно это клиент функции может ожидать. Однако это также означает, что любое исключение, сгенерированное где-нибудь в функции, обработано и не повторно брошенное назад в родителя do_something(). Позор нем, кто пере -throw- eth из, поскольку нет ничего, которое это будет мешать ему бросить. Это вызвано тем, что, бросая из функции с пустой спецификацией исключения эквивалентно выдаче исключения, не упомянутого в спецификации и создании std::unexpected() должен ожидаться сопровождаемый завершением программы.

BTW: общепринятое определение сильной гарантии исключения: Если общедоступная операция перестала работать по некоторым причинам, исключение выдается, и состояние объекта оставлено без изменений (атомарная операция).

1
ответ дан 3 December 2019 в 03:19
поделиться

В основном, путем объявления функции с throw(); Вы говорите компилятору, что Вы на сто процентов уверены, что функция не собирается выдавать любые исключения, позволяя компилятору выполнить некоторую оптимизацию. Если Ваша функция выдает исключение так или иначе, Вы в беде, так как она, скорее всего, приводит к неопределенному поведению.

0
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: