Как может я создавать станд.:: вектор <станд.:: строка> и затем сортирует их?

Этот запрос будет работать для вас.

Для обновления таблицы.

ALTER TABLE `column_name` CHANGE `tab` `my_id` INT(11) NOT NULL DEFAULT '0';

Для таблицы вставки

CREATE TABLE `db_name`.`Tbale_name` ( `demo` INT NOT NULL DEFAULT '0');
33
задан samoz 27 March 2009 в 00:44
поделиться

5 ответов

Можно просто сделать

std::sort(data.begin(), data.end());

И это отсортирует Ваши строки. Затем пройдите их проверяющий, ли они в порядке

if(names.empty())
    return true; // empty vector sorted correctly
for(std::vector<std::string>::iterator i=names.begin(), j=i+1; 
        j != names.end(); 
        ++i, ++j)
    if(*i > *j)
        return false;
return true; // sort verified

В частности, std::string::compare не мог использоваться в качестве компаратора, потому что он не делает что sort хочет, чтобы это сделало: Возвратите true, если первым аргументом являются меньше, чем второе, и возвратите false иначе. Если Вы используете sort как вышеупомянутый, это будет просто использовать operator<, который сделает точно это (т.е. std::string заставляет его возвратиться first.compare(second) < 0).

66
ответ дан 27 November 2019 в 17:58
поделиться

litb корректен, как всегда.

Я просто хотел указать на более общую точку - что-либо, что может быть по сравнению с <может быть отсортирован со станд.:: вид. Я иногда стащу оператор <функция членства в структуру, именно так я могу сделать это.

2
ответ дан 27 November 2019 в 17:58
поделиться

Каков вопрос точно? Кажется, что все уже там.

Однако необходимо, вероятно, использовать std::cout << *i << std::endl;

  1. i итератор == указатель на данные в контейнере, таким образом, * необходим
  2. c_str() функция std::string и не переменная

Проблемы в Вашем коде не касаются Вашего вопроса?

Некоторые подсказки для Вас:

  • std::vector также переопределения [] оператор, таким образом, можно вместо этого сохранить стычку итератора и использовать ее как массив (выполняют итерации от 0 кому: vector.size()).
  • Вы могли использовать std::set вместо этого, который имеет автоматически сортировку на вставке (двоичное дерево), таким образом, Вы сохраняете дополнительную сортировку.
  • Используя функтор делает Ваш вывод еще большим количеством забавы: copy(V.begin(), V.end(), ostream_iterator<std::string>(cout, "\n"));
3
ответ дан 27 November 2019 в 17:58
поделиться

Для использования вида:
std::sort или std::vector< std::string>::sort(..) метод.
Чтобы проверить, отсортировано ли это:
использовать std::is_sorted поскольку проверка отсортирована - http://www.sgi.com/tech/stl/is_sorted.html
или
std::adjacent_find( v.begin(), v.end(), std::greater< std::string >() ) == v.end()

для Вашего случая Вы могли использовать компаратор по умолчанию

ОТРЕДАКТИРОВАННЫЙ:
std::is_sorted не стандартная функция stl, она определила в sgi stl реализацию.
Спасибо @Brian Neal для этого примечания.

2
ответ дан 27 November 2019 в 17:58
поделиться

Вы могли использовать a std::set, который является естественно отсортированным контейнером.

0
ответ дан 27 November 2019 в 17:58
поделиться
Другие вопросы по тегам:

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