输入,特别是对于有要求的输入,我们能采取数组加循环的方法,string加循环的方法,今天,小编学到一下点其他的方法。想赶快记录下来。
这种方法是用vector。
vector
是 C++ 标准库中的一个动态数组容器,可以方便地处理可变大小的序列。在这里,我会解释一下如何使用 vector
。
首先,你需要包含头文件 <vector>
。
#include <vector>
接下来,你可以声明一个 vector
对象。例如:
vector<int> sequence1;
vector<int> sequence2;
上述代码声明了两个 vector
对象,sequence1
和 sequence2
,它们都是存储整数的动态数组。
要添加元素到 vector
,可以使用 push_back
函数。例如:
sequence1.push_back(1);
sequence1.push_back(2);
// ...
上述代码将整数 1 和 2 添加到 sequence1
中。你可以根据需要反复调用 push_back
。
读取 vector
中的元素可以使用下标操作符 []
或者使用迭代器。例如:
for (int i = 0; i < sequence1.size(); ++i) {
cout << sequence1[i] << " ";
}
或者使用迭代器:
for (auto it = sequence1.begin(); it != sequence1.end(); ++it) {
cout << *it << " ";
}
上述代码输出了 sequence1
中的所有元素。begin()
返回一个指向序列开头的迭代器,end()
返回一个指向序列末尾的迭代器。
请注意,在实际应用中,可以使用 C++11 中引入的范围-based for 循环更简洁:
for (int num : sequence1) {
cout << num << " ";
}
这样就遍历了 sequence1
中的所有元素。
总体而言,vector
提供了一种方便且高效的方法来管理动态数组。在这个问题中,我们使用 vector
存储每个序列的元素,以便更方便地进行处理。
all in all
来一个例子简单体会一下
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> sequence1, sequence2;
int num;
while (cin >> num && num != -1) {
sequence1.push_back(num);
}
while (cin >> num && num != -1) {
sequence2.push_back(num);
}
int len_seq1 = sequence1.size();
int len_seq2 = sequence2.size();
int diff = 0;
// 寻找第一个不同元素的差值
int min_len = min(len_seq1, len_seq2);
for (int i = 0; i < min_len; ++i) {
if (sequence1[i] != sequence2[i]) {
diff = sequence1[i] - sequence2[i];
break;
}
}
// 输出结果
cout << len_seq1 << endl;
cout << len_seq2 << endl;
if (diff != 0) {
cout << diff << endl;
} else {
if (len_seq1 == len_seq2) {
cout << 0 << endl;
} else {
cout << "Not Comparable" << endl;
}
}
return 0;
}
首先呢是题干要求是-1的话就停止;
就这一步的处理,我也是很受启发
while (cin >> num && num != -1) {
sequence1.push_back(num);
}
while (cin >> num && num != -1) {
sequence2.push_back(num);
}
再加之vector的动态性,就很舒服;
但是再学习c++中,即会接受到一些简便的东西,同时也要自己尝试去用c去搞一些麻烦事儿,总之,收益良多,继续努力吧.