Аз съм нов в c++, по принцип принадлежа към PHP. Така че се опитвам да напиша програма само за практика, за сортиране на масив. Успешно създадох програмата със стойност на статичен масив, която е
// sort algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
bool myfunction (int i,int j) { return (i<j); }
struct myclass { bool operator() (int i,int j) { return (i<j);} } myobject;
int main () {
int myints[] = {55,82,12,450,69,80,93,33};
std::vector<int> myvector (myints, myints+8);
// using default comparison (operator <):
std::sort (myvector.begin(), myvector.begin()+4);
// using function as comp
std::sort (myvector.begin()+4, myvector.end(), myfunction);
// using object as comp
std::sort (myvector.begin(), myvector.end(), myobject);
// print out content:
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
изходът му е ок. Но искам елементите да се въвеждат от потребител с space
разделени или ,
разделени. Така че аз опитах това
int main () {
char values;
std::cout << "Enter , seperated values :";
std::cin >> values;
int myints[] = {values};
/* other function same */
}
не хвърля грешка по време на компилиране. Но op не е както се изисква. то е
Въведете, разделени стойности: 20,56,67,45
моят вектор съдържа: 0 0 0 0 50 3276800 4196784 4196784
------------------ (програмата излезе с код: 0) Натиснете връщане, за да продължите
values
е едноchar
, така че вашият масив има точно един елемент. Трябва да използватеstd::vector<int>
иpush_back
. (Примери има навсякъде в интернет.) - person molbdnilo   schedule 07.09.2015int
s, тъй като той вече поддържаoperator<
. - person user877329   schedule 07.09.2015