实现读取一行被空格分开的一组数值 并存入数组vector中
一般是知道了要输入多少个数字,如5;第一时间想到的是下面这样
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n = 5,temp;
vector<int> a;
for (int i = 0; i < 5;i++) {
cin >> temp;
a.push_back(temp);
}
cout << a.size()<<endl;
}
下面这种方法就不用知道具体有多少个数据:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main() {
string input;
getline(cin, input);
stringstream stringin(input);
int num;
vector<int> a;
while (stringin >> num) {
a.push_back(num);
}
for (int i = 0; i < a.size(); i++) {
cout << "a[" << i << "] = " << a[i] << " ";
}
cout << endl;
cin.get();
}
用assign来截取vector值时
一定要注意assign里开始和结尾的范围。
void assign(InputIterator First, InputIterator Last);
参数:
第一个
要复制的元素范围内的第一个元素的位置。
最后一个
要复制的元素范围外的第一个元素的位置。左闭右开的结构,所以右边要超出一位来。
还有一种形式:
void assign(size_type Count, const Type& Val);
要插入(第一个参数)个(第二个参数)的值。
#include <iostream>
#include<vector>
using namespace std;
int main() {
int n, temp, cnt = 0;
cin >> n;
cout << n << endl;
vector<int> a, b;
vector<int> v11, v12;
for (int i = 0; i < n; i++) {
cin >> temp;
a.push_back(temp);
}
cout << a[0] << endl;
for (int i = 0; i < n; i++) {
for (int j = i+1; j <= n; j++) {
v11.assign(a.begin() + i, a.begin() + j);
cout << v11[0] << endl;
}
}
cin.get();
cin.get();
}