C++中如何不声明临时变量就向vector emplace_back追加输入元素
无需临时变量的vector输入实现方案
完全可以去掉临时变量,以下是两种常用的实现方式:
方案1:预分配vector大小后直接按下标读取
和数组的写法逻辑完全一致,只要先把vector的大小设置为元素总数n,就可以直接通过下标操作接收输入:
vector<int> vec(n); // 初始化时直接指定大小为n // 若已经声明空vector,可加一行 vec.resize(n); for(int i = 0; i < n; i++) { cin >> vec[i]; }
这种写法和你给出的数组输入逻辑几乎完全相同,没有额外临时变量,可读性也很高。
方案2:使用STL算法省略显式循环和临时变量
借助标准库的输入迭代器和插入迭代器,可以不用手写循环,也完全不需要声明临时变量:
#include <iterator> // 需引入istream_iterator的头文件 vector<int> vec; vec.reserve(n); // 预分配空间避免多次扩容,可选但推荐 std::copy_n(std::istream_iterator<int>(std::cin), n, std::back_inserter(vec));
这种写法更符合现代C++的编码风格,不需要手动管理下标,也没有显式的临时变量声明。
内容的提问来源于stack exchange,提问作者OREZ
相关产品推荐
相关产品推荐

