PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال در مورد سرفایل وکتور چیزی میدونید؟



shabnamshirin
12th March 2010, 01:19 PM
سلام.کسی در مورد هدر فایل وکتور چیزی میدونه؟


طرز استفاده و کاربردش


اگه میشه یه مثالی هم مثلا مرتب کردن یه آرایه باهاش بفرمایید(با سی پلاس پلاس)


مرسی@};-

بانوثریا
12th March 2010, 06:55 PM
سلام من در مورد وکتور سرچ کردم و اینا رو پیدا کردم امیدوارم به کارت بیاد

برای دسترسی مستقیم به عناصر وکتور، میتونید مثل آرایه از اندیس گذاری استفاده کنید. مثلاً text یک وکتور دو بعدی هست (مثل یک آرایه دو بعدی)، پس:

[text[0][1

کلمه دوم از سطر اول را بر میگرداند.
-----------------------

برای مرتب کردن کل متن باید همه کلمه ها کنار هم باشند. پس میشود همه رو در یک vector (مثلاً به نام all_words) بریزیم و بعد مرتب کنیم:



vector <string> all_words;
vector < vector<string> >::iterator t_iter;

for (t_iter = text.begin(); t_iter != text.end(); t_iter++)
all_words.insert(all_words.end(), t_iter->begin(), t_iter->end());

sort(all_words.begin(), all_words.end());
تابع insert یک (یا قسمتی از یک) کانتینر رو به دیگری اضافه میکند. در اینجا گفتیم که: برای هر کدوم از خطوط، از اول تا آخرش (تمام کلمه هاش) را به آخر all_words اضافه کن.
پس تمام کلمه ها در all_words خواهند بود؛ و اگر بخوایم به کلمه j ام در کل متن دسترسی مستقیم داشته باشیم:


all_words[j]
-----------------

البته یک نکته در مورد تابع sort را هم بگم:
این تابع از عملگر کوچکتر برای مقایسه استفاده میکند. در string ها چون بر اساس کد ASCII کاراکترهایشان مرتب میشوند، پس مثلاً De از ab بزرگتر هست (یعنی چون کد اسکی حروف بزرگ از تمام حروف کوچک بزرگتر هست، پس تمام حروف بزرگ، بزرگتر از حروف کوچک هستند). اما ممکن هست شما بخواید همون ab از De بزرگتر باشد (یعنی بزرگی و کوچکی حروف تأثیری در مرتب سازی آنها نداشته باشد). برای این منظور میشود هنگام مقایسه، تمام حروف هر کلمه را بصورت کوچک در نظر بگیریم.
تابع sort میتواند یک آرگومان سوم هم بگیرد که نام یک تابع هست (در اینجا اسمش رو word_comp گذاشتم). این تابع باید دو مقدار بگیرد که همان مقادیری هستند که تابع sort آنها را با هم مقایسه میکند. یک مقدار bool هم برگرداند که نشان میدهد آیا پارامتر اول از دومی کوچکتر بوده است یا نه.

کد تابع word_comp که باید بعنوان آرگومان سوم تابع sort پاس داده شود:


bool word_comp(string w1, string w2)
{
transform(w1.begin(), w1.end(), w1.begin(), tolower);
transform(w2.begin(), w2.end(), w2.begin(), tolower);

return (w1 < w2);
}
قطعه کد زیر، کل کلمه ها را بدون در نظر گرفتن بزرگی و کوچکی حروف آنها مرتب میکند (فقط در خط آخر word_comp اضافه شده است):



vector <string> all_words;
vector < vector<string> >::iterator t_iter;

for (t_iter = text.begin(); t_iter != text.end(); t_iter++)
all_words.insert(all_words.end(), t_iter->begin(), t_iter->end());

sort(all_words.begin(), all_words.end(), word_comp

**********************************





میتونید از این کد استفاده کنید:

[include های مورد نیاز: <vector> و <sstream> هستند.]


vector < vector<string> > text;
string line, word;

getline( cin, line );

while (line != "")
{
istringstream iss( line );
vector<string> v_line;

do
{
iss >> word;
v_line.push_back(word);

} while( !iss.eof() );

text.push_back( v_line );
getline( cin, line );
}
text همون وکتور اصلی هست که گفتید (یعنی همه سطرها در آن قرار میگیرند).
تا وقتی که کاربر یک خط خالی وارد کند، گرفتن ورودی ادامه خواهد داشت.

shabnamshirin
13th March 2010, 08:20 PM
دست شما درد نکنه ثریا خانوم;;)@};-

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد