set |
A set stores elements without allowing duplicates. The example illustrates who to store words. Un conjunto o set almacena elementos sin permitir duplicados. El ejemplo ilustra como guardar palabras. |
Program.cpp |
void Program::MyFunc() { set<wstring> data; data.insert(L"desk"); data.insert(L"chair"); data.insert(L"lamp"); data.insert(L"desk"); // it will not be inserted as it is already stored in the map data.insert(L"pen"); //______________________________ List the content of the set set<wstring>::iterator p; for(p = data.begin(); p != data.end(); p++) { tbxList.Text += *p; tbxList.Text += L"\r\n"; } } |
Problem 1 |
Cree a Dialog application using Wintempla called Dictionary to extract the words from a textbox. The words must be sorted in alphabetical order. Duplicates should not be stored neither displayed. Cree una aplicación de Diálogo usando Wintempla llamada Dictionary para extraer las palabras de una caja de texto. Las palabras deben almacenarse en orden alfabético. Duplicados no se deben almacenar ni mostrar. |
set::find |
The following code illustrates how to find if an element is in a set. El siguiente código ilustra cómo encontrar si un elemento se encuentra en un set. |
Program.cpp |
void Dictionary::Window_Open(Win::Event& e) { set<wstring> mySet; ... if (mySet.find(x) == myset.end()) { // Not found } else { // Found } } |
set::insert |
The following code illustrates how to find if an element was inserted in a set. El siguiente código ilustra cómo encontrar si un elemento se insertó en un set. |
Program.cpp |
void Dictionary::Window_Open(Win::Event& e) { set<wstring> mySet; pair<set<wstring>::iterator, bool > p; ... p = mySet.insert(x); if (p.second == true) { // Inserted } else { // Not inserted // Read p.first } } |
Set Operations |
It is possible to compute several set operations using: set_symmetric_difference(...) or set_difference(...), set_union(...), and set_intersection(...). You will need to include algorithm.h to use this function. Note that you can use these functions on STL vectors that have sorted data. See the example below. Es posible calcular varias operaciones entre conjuntos usando: set_symmetric_difference(...) or set_difference(...), set_union(...) y set_intersection(...). Usted necesitará incluir algorithm.h para usar esta función. Note que usted puede usar estas funciones en vectores de la STL que tengan datos almacenados. Vea el ejemplo de abajo. |
Program.cpp |
//________________________________________________________ Using vector vector<wstring> A; vector<wstring> B; ... std::sort(A.begin(), A.end()); std::sort(B.begin(), B.end()); vector<wstring> diffAB(A.size() + B.size()); vector<wstring>::iterator p = std::set_difference(A.begin(), A.end(), B.begin(), B.end(), diffAB.begin()); diffAB.resize(p - diffAB.begin()); //________________________________________________________ Using set set<wstring> setA; set<wstring> setB; set<wstring> intAB; std::set_intersection(setA.begin(), setA.end(), setB.begin(), setB.end(), std::inserter(intAB, intAB.end())); |
erase |
The erase function is used to delete one element from a set. The following example illustrates how to delete one item from the container. La función erase es usada para borrar un elemento de un set. El ejemplo siguiente ilustra cómo borrar un artículo del contenedor. |
Program.cpp |
... void Program::Window_Open(Win::Event& e) { set<int> data; data.insert(10); data.insert(11); data.insert(12); data.insert(13); data.insert(14); data.insert(15); data.erase(13); wstring text; wchar_t tmp[32]; for (set<int>::iterator p = data.begin(); p != data.end(); p++) { _snwprintf_s(tmp, 32, _TRUNCATE, L"%d\r\n", *p); text += tmp; } this->MessageBox(text, L"set", MB_OK); } |