| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > быстрый поиск |
| Автор: g-r-i-n 9.3.2004, 17:06 | ||
| Коллеги, выручайте! Моя программа реализована на Java, но узкое место нужно сделать в JNI. Я в нем (в С++) давно уже не трудился и не скоро буду, поэтому, если кому не жалко, черкните пару строк (желательно полностью рабочий класс): из массива, скажем М, со строками одинаковой длины берется очередное значение и ищется в векторе V (изначально пустом). Если оно там есть, в другом векторе C элемент с этим же индеском инкрементируется. Если нету - новая строка добавляется в V а в С по тому же индексу ставится единица. Например исходные данные: М: "018723" ; "738495"; "265833"; "738495"; "265833"; "738495"; Результат:
Порядок элементов значения не имеет. Заранее благодарен.. P.s. Для меня вся трудность в итераторах и слежении за памятью (кстати массивы - в десятки мегабайт), я в С++ за себя не ручаюсь, потому и отвлекаю вас от дел ратных. Кроме того, из-за скромных размеров я использую компилятор Watcom, что, оказывается, тоже - специфика. Если кому чего на Яве или J2ME надо будет - с удовольствием поделюсь |
| Автор: Borisff2003 10.3.2004, 07:08 |
| Как предполагается скрещиват С++ и Java? Если напишешь какие параметры ту хочешь видеть в Функции , то возможно помогу. Например так пойдет Просто не совсем понятно что ты подразумеваешь по вектором и массивом Вот примеры char* M[]; string M[]; vector<char*> V; vector<string> V; int c[]; vector<int> C; И вобще насколько я понял тебе надо использовать STL. |
| Автор: g-r-i-n 10.3.2004, 12:34 |
| Привет, Borisff2003 У меня уже Ява и С++ работают (через dll), просто вместо результата стоит заглушка. Смысл такой - приложение получает (либо генерирует, это не важно) массив данных (скорее всего сhar*, string это наверное класс, т.е. он "дороже") размера size, а обработанные данные он в Яву уже не пересылает, они все равно должны храниться в файле, вот оно их и сохраняет там. Ява потом, когда нужно сама эти данные достает. Все уже работает, нужна только функция быстрого поиска в большом наборе данных. Под вектором я понимаю класс, который есть в любом языке программирования, это не что-то особенное, но если это будет любая другая конструкция - ничего страшного, лишь бы потом можно было данные переписать в файл. Просто я так понимаю в С++ удобнее всего использовать упорядоченный вектор или хэш какой-нибудь. Формат записи в файл - нетривиальный, так что я его сам реализую. В общем главное - это что массив char* [], а результат в любом виде, как удобней и эффективней, главное пару слов по поводу того, как достать потом это правильно и память освободить. И вообще, есть ли в С++ какой нибудь универсальный сборщик мусора, который подошел бы во всех случаях? Понимаю, что С++ это не Ява, но почему бы и нет?.. |
| Автор: Borisff2003 10.3.2004, 13:38 | ||
|