PDA

Tam Sürümünü Görmek İçin : c++ vector yarım ltfen


cursexx
19/05/2008, 05:54
slm arladaşlar c++ da vector içerisine kaydettigim verinin vector ün kacıncı elemanı oldugunu nasıl ögrenebilirim acaba :garip: aramadıgım kaynak kalmadı ya ben bir yerde gözden kacırdım yada bulamıyorum :aglama: şimdiden teşekkürler:hey:


acehreli
19/05/2008, 07:03
Bir dizi eleman icinde aramak icin normalde std::find islevi kullanilir:


#include <vector>
#include <iostream>
#include <algorithm>

typedef std::vector<int> Sayilar;

int main()
{
Sayilar sayilar;
sayilar.push_back(1);
sayilar.push_back(2);
sayilar.push_back(3);

Sayilar::iterator it = std::find(sayilar.begin(), sayilar.end(), 2);

if (it == sayilar.end()) {
std::cout << "Bulamadim\n";
} else {
std::cout << "Buldum: " << *it << '\n';
}
}


Ali

cursexx
19/05/2008, 07:42
yarımın için öncelikle teşekkür ederim ama sanırım tam sorunumu anlatamadım

#include <vector>
#include <iostream>
#include <algorithm>

typedef std::vector<int> Sayilar;

int main()
{
Sayilar sayilar;
sayilar.push_back(1);
sayilar.push_back(2);
sayilar.push_back(3);

Sayilar::iterator it = std::find(sayilar.begin(), sayilar.end(), 2);

if (it == sayilar.end()) {
std::cout << "Bulamadim\n";
} else {
std::cout << "Buldum: " << *it << '\n';
}
}
yukarıdaki örnekte vector ün içerisinde bir deger arıyoruz ama benim istedigim misal 1 aradım sonuc olarak vector ün 0. konumundaki elemanı olarak almak istiyorum.. yada 3 aradım vector ün 3. elemanı olarak sonuc almak istiyorum .. bu konuda yardımcı olabilirmisiniz?

hgedek
19/05/2008, 08:59
#include <vector>
#include <iostream>
#include <algorithm>

typedef std::vector<int> Sayilar;

int main()
{
Sayilar sayilar;
int index=0;
bool hata=true;
sayilar.push_back(1);
sayilar.push_back(2);
sayilar.push_back(3);

Sayilar::iterator it;
for(it=sayilar.begin();it!=sayilar.end();it++,inde x++)
{
if(*it=aranan)
{
hata=false;
break;
}
}

if(!hata)
std::cout<<"indeks:"<<index<<std::endl;
}

hgedek
19/05/2008, 09:04
#include <vector>
#include <iostream>
#include <algorithm>

typedef std::vector<int> Sayilar;

int main()
{
Sayilar sayilar;
sayilar.push_back(1);
sayilar.push_back(2);
sayilar.push_back(3);

Sayilar::iterator it = std::find(sayilar.begin(), sayilar.end(), 2);

if (it != sayilar.end())
std::cout<<it-sayilar.begin()<<std::endl;
}

acehreli
19/05/2008, 09:05
std::distance'i da kullanabilirsin:


std::cout << "indeks: " << std::distance(sayilar.begin(), it) << '\n';


Ali

cursexx
19/05/2008, 09:14
cok teşekkürler hgedek cok işime yarayacak sagolasın ...sanırım seninde gözünden kactı
if(*it=aranan) bu şekilde degilde if(*it==aranan) olarak calıştı ...ellerine saglık