STL এর যেসমস্ত লাইব্রেরি আছে যেমন Set, Vector, stack, queue এগুলোতে ডাটা ইনপুট নেওয়ার জন্য push_back /push ইত্যাদি ব্যাবহার করা হয় । যেমন , Vector এর ক্ষেত্রে push_back() দিয়ে ইনপুট নেওয়া হয় । কিন্তু push_back দিয়ে ইনপুট নিলে আমাকে কোডে সরাসরি ইনপুট টা বসাতে হয় । কিন্তু আমি চাচ্ছি কনসোল থেকে ইনপুট নিতে । সেটা কিভাবে করবো?

asked 05 Nov '15, 20:29

Rana's gravatar image

Rana
230421

edited 05 Nov '15, 20:30


বিশেষ কোন নিয়ম আছে বলে আমার জানা নাই, একটি variable নিবেন, তাতে input নিয়ে vector এ ঢুকাবেন, আমার জানা মতে এটাই সহজ পদ্ধতি। short cut এর জন্য push_back কে ছোট কিছু দিয়ে define করে রাখতে পারেন।

নিচে একটা sort করার sample দিলাম, ideone এ দেখতে পারেন এখানে

#include <iostream>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#define pb push_back
using namespace std;

int main() {
    // your code goes here
    vector<int>v;
    set<int>s;
    queue<int>q;
    stack<int>st;


    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        v.pb(n);
        s.insert(n);
        q.push(n);
        st.push(n);
    }

    sort(v.begin(), v.end());


    //only in c++11 (vector)
    for(auto &x : v)
        cout<<x<<" ";
    cout<<endl;

    //vector accessing like array
    for(int i = 0; i<v.size(); i++)
        cout<<v[i]<<" ";
    cout<<endl;

    //vector accessing through forward iterator
    for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
        cout<<*it<<" ";
    cout<<endl;

    //vector accessing through backward iterator
    for(vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); it++)
        cout<<*it<<" ";
    cout<<endl;

    //only in c++11 (set)
    for(auto &x : s)
        cout<<x<<" ";
    cout<<endl;

    //set accessing through forward iterator
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<" ";
    cout<<endl;

    //set accessing through backward iterator
    for(set<int>::reverse_iterator it = s.rbegin(); it != s.rend(); it++)
        cout<<*it<<" ";
    cout<<endl;


    //queue accessing
    while(!q.empty())
    {
        cout<<q.front()<<" ";
        q.pop();
    }
    cout<<endl;

    //stack accessing
    while(!st.empty())
    {
        cout<<st.top()<<" ";
        st.pop();
    }
    cout<<endl;

    return 0;
}
permanent link

answered 06 Nov '15, 09:50

manetsus's gravatar image

manetsus
2.2k211

edited 06 Nov '15, 20:35

1

ইনপুট নেয়ার পর ওগুলো প্রিন্ট করবো কিভাবে ?

(06 Nov '15, 19:34) Rana

just think like an array. i-th element can be accessed by v[i]

(06 Nov '15, 19:53) manetsus

সেটের ক্ষেত্রে সেভাবে হচ্ছেনা । আপনি যদি একটা স্যাম্পল কোড দিতেন । সেটের ক্ষেত্রে

(06 Nov '15, 20:18) Rana
1

সেটের ক্ষেত্রে direct access করা যায় না। এমন কি stack, queue এর ক্ষেত্রেও না। একটু wait করেন, দিচ্ছি।

(06 Nov '15, 20:20) manetsus

@Rana updated.

(06 Nov '15, 20:36) manetsus

iterator ছাড়া আর কোন উপায় আছে ?

(08 Nov '15, 14:58) Rana

শুধু array, map এগুলো ছাড়া আর কোনটাতে iterator ছাড়া কাজ করা যায় না।

(08 Nov '15, 15:55) manetsus
1

Thanks a lot :)

(08 Nov '15, 16:13) Rana

@Rana Thank you too. :)

(08 Nov '15, 16:15) manetsus
showing 5 of 9 show 4 more comments
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×14

question asked: 05 Nov '15, 20:29

question was seen: 856 times

last updated: 08 Nov '15, 16:15