Форум программистов, компьютерный форум CyberForum.ru

Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Узнать, есть ли элемент на определенной позиции в экземпляре std::vector http://www.cyberforum.ru/cpp-beginners/thread554563.html
Подскажите пожалуйста, как узнать есть ли элемент на определенной позиции в экземпляре std::vector? Например есть: vector<int> intVector; Нужно узнать есть ли что нибудь на позиции i: intVector P.S. Сам все понял, тему можно удалить.
C++ Консольная программа тестирования [работа с текстовыми файлами] Здравствуйте. Первый раз программирую на С++. Есть "ТЗ": разработать программу для тестирования знаний учащихся (курсач). Подскажите, есть ли на этом форуме похожие темы? Поиском пользовался, но то ли лыжи не те, то ли я... Если же тем нету, то дайте пожалуйста ссылки на тему по работе с файлами и каталогами. То есть нужна следующая информация: -просмотр списка файлов в каталоге -чтение и... http://www.cyberforum.ru/cpp-beginners/thread554560.html
Метод Милна. Расчет по нескольким уравнениям. C++
Приветствую вас. Очень помощь нужна мне © Йода XD. Нужно модернизировать программку, чтобы можно было производить расчет по нескольким уравнениям, а не по одному, заданному программой. Ниже вложено изображение с примерами. Все что нужно сделать в программе: сделать возможным ввод коэффициентов уравнений и выбора степени х и у. Ну и хотелось бы чтобы прога выводила значения правильно))) float...
Описаие класса C++
Задание: Классы Террит единица, область, растение, дерево, цветок,страна. запросы: вывести перечень растений указанного вида, произросшего в террит единице указанного вида; вывести перечень ягодных деревьев, произрастающих в территориальной единице указанного вида вывести количесво видов видов растений указанного вида, произрастающих в территориальной единице указанного вида. ...
C++ Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( http://www.cyberforum.ru/cpp-beginners/thread554552.html
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде исправил, но теперь в выводе мне пишет чтото непонятное....Помогите пжалсто =) #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> void main() { int vhod,b,c,d,e,g ; FILE *f;
C++ Массив указателей на объекты подклассов Доброго времени суток всем!!! Проф задал написать парсер простых математических выражений с использованием скобок. Код не должен выходить за рамки изученого матерьяла и не должен использовать сторонних библиотек Текущая проблема: По условию задания необходимо создать базовый класс "выражение" #pragma once подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
22.04.2012, 16:02     Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция
Вот немного подправленный вариант, но с сетами. Вместо std:air - самодельная структурка с идентификатором слов и собственно набором слов. Мемберы такой структуры более понятные, чем first и second у пары. Использовать строки вроде ("кот, котяра, кошак") неправильно. Это я уже писал. Поэтому просто вектор отдельных слов. Использование пары стринг-стринг плохо тем, что позволяет переводить один набор слов в другой, но не наоборот. То, что я тут написал - позволяет переводить слова из обоих наборов. Функция Process не поменялась почти. Только типы и имена переменных. Конкретные словами набивайте контейнеры сами. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <set>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>
 
typedef std::vector<std::wstring> Words;
 
struct WordsEntry
{
  unsigned id;
  Words words;
 
  explicit WordsEntry(unsigned theId)
    : id(theId)
  {
  }
 
  WordsEntry(unsigned theId, const Words& theWords)
    : id(theId)
    , words(theWords)
  {
  }
};
 
struct WordEntryLessById
{
  bool operator () (const WordsEntry& lhs, const WordsEntry& rhs) const
  {
    return lhs.id < rhs.id;
  }
};
 
typedef std::set<WordsEntry, WordEntryLessById> Set;
 
std::wostream& operator << (std::wostream& out, const Words& words)
{
  std::copy(words.begin(), words.end(),
    std::ostream_iterator<std::wstring, std::wstring::value_type>(out, L", "));
  return out;
}
 
void Process(const Set& keySet, const Set& assocSet, const std::wstring& word)
{
  std::wcout << L"-----------------------------------------------------" << std::endl;
  std::wcout << L"Processing of the '" << word << L"' word:" << std::endl;
  Set::const_iterator keyIter = keySet.end();
  for (Set::const_iterator it = keySet.begin(), end = keySet.end(); it != end; ++it)
  {
    if (it->words.end() != std::find(it->words.begin(), it->words.end(), word))
    {
      keyIter = it;
      break;
    }
  }
 
  if (keyIter == keySet.end())
  {
    std::wcout << L"The word is not found in key set." << std::endl;
    return;
  }
 
  Set::const_iterator assocIter = assocSet.find(WordsEntry(keyIter->id));
  if (assocIter == assocSet.end())
  {
    std::cout << L"The word is not found in associative set." << std::endl;
    return;
  }
 
  std::wcout << assocIter->words << std::endl;
}
 
int main()
{
  Set eng;
  Set rus;
 
  Words words;
  words.push_back(L"11");
  words.push_back(L"22");
  words.push_back(L"33");
  eng.insert(WordsEntry(0, words));
 
  words.clear();
  words.push_back(L"xx");
  words.push_back(L"yy");
  words.push_back(L"zz");
  rus.insert(WordsEntry(0, words));
 
  words.clear();
  words.push_back(L"33");
  words.push_back(L"44");
  words.push_back(L"55");
  eng.insert(WordsEntry(1, words));
 
  words.clear();
  words.push_back(L"aa");
  words.push_back(L"bb");
  words.push_back(L"cc");
  rus.insert(WordsEntry(1, words));
 
  Process(eng, rus, L"11");
  Process(eng, rus, L"44");
  Process(rus, eng, L"aa");
  Process(rus, eng, L"cc");
  Process(eng, rus, L"xyz");
  Process(rus, eng, L"xyz");
 
  return 0;
}
 
Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru