То, что вы можете сделать, и то, что вы должны сделать, это разные вопросы.
Если список очень короткий или вы когда-либо будете вызывать функцию find, используйте линейный подход, описанный выше.
Однако линейный поиск - одно из самых больших зол, которые я нахожу в медленном коде, и рассмотрите возможность использования упорядоченной коллекции (set или multiset, если вы разрешаете дубликаты). Если вам нужно вести список по другим причинам, например, с использованием метода LRU, или вам необходимо поддерживать порядок вставки или какой-либо другой порядок, создайте для него индекс. На самом деле вы можете сделать это, используя std :: set итераторов списка (или мультимножества), хотя вам нужно поддерживать это всякий раз, когда ваш список изменяется.