码迷,mamicode.com
首页 > 其他好文 > 详细

vector 为什么不可以直接用cin插入的故事

时间:2019-12-09 01:14:22      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:reference   cto   int   can   gen   没有   bit   clu   enc   

vector
http://www.cplusplus.com/reference/vector/vector/?kw=vector
template < class T, class Alloc = allocator<T> > class vector; // generic template

当你写个程序比如下面这个
#include <bits/stdc++.h>

int main(){
    int n; 
    std::cin >> n;
    std::vector<int> v;
    for(int i = 0; i < n; i++)    std::cin >> v[i];

    for(int i = 0; i < n; i++)    std::cout << v[i] << " ";
    return 0;
}

 你会发现欸, 程序怎么突然挂了  异常退出

 那是因为上面的程序 vector 只是声明而已, 并没有开辟内存  你有如下两种选择

 1) If you know the size of vector will be (in your case/example it‘s seems you know it):

#include <bits/stdc++.h>

int main(){
    int n; 
    std::cin >> n;
    std::vector<int> v(n);
    for(int i = 0; i < n; i++)    std::cin >> v[i];

    for(int i = 0; i < n; i++)    std::cout << v[i] << " ";
    return 0;
}
2) if you don‘t and you can‘t get it in you‘r program flow then:
#include <bits/stdc++.h>

int main(){
    int n; 
    std::cin >> n;
    std::vector<int> v;
    for(int i = 0; i < n; i++)   {
        int x;
        std::cin >> x; 
        v.push_back(x);  
    } 
for(int i = 0; i < n; i++) std::cout << v[i] << " "; return 0; }

 



vector 为什么不可以直接用cin插入的故事

标签:reference   cto   int   can   gen   没有   bit   clu   enc   

原文地址:https://www.cnblogs.com/163467wyj/p/12008751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!