如何在一行中将 cin 中的值转换为 vector.push_back()
How to take value from cin into vector.push_back() in one line?
我可以在一行中执行此操作吗?
int temp;
cin >> temp;
vtr.push_back(temp);
对于奖励积分,有没有办法也包含 for 循环替代方案
for(int i=0; i < 5; i++){
int temp;
cin >> temp;
vtr.push_back(temp);
}
需要注意的是,我不能做类似while(cin >> myInt)
的事情,因为读入文件有多行,但我一次只想读取 5 行。我也不知道我怎么能像 vtr.push_back(cin >> ??? )
使用std::istream_iterator<>
. 下面是一个从 stdin(标准)的内容构造std::vector
的示例:
#include <iostream>
#include <vector>
int main(int argc, char **argv) {
std::vector<int> vec{
std::istream_iterator<int>(std::cin),
std::istream_iterator<int>()};
for (int i : vec) {
std::cout << i << 'n';
}
return 0;
}
如果您愿意,可以在循环中使用push_back
。
#include <iostream>
#include <vector>
int main(int argc, char **argv) {
std::vector<int> vec;
for (std::istream_iterator<int> p{std::cin}, e; p != e; ++p) {
vec.push_back(*p);
}
for (int i : vec) {
std::cout << i << 'n';
}
return 0;
}
我可以在一行中执行此操作吗?
不是直接的,但你可以包装它:
template<typename ContainerType>
void readValue(std::istream &in, ContainerType &container)
{
ContainerType::value_type temp;
if (in >> temp)
container.push_back(temp);
}
然后是单行调用:
readValue(cin, vtr);
对于奖励积分,有没有办法也包含 for 循环替代方案
如果使用 C++11 或更高版本,则可以将 std::copy_n()
与 std::istream_iterator
一起使用,并std::back_inserter
:
std::copy_n(std::istream_iterator<int>(std::cin), 5, std::back_inserter(vtr));
否则,只需使用手动循环:
for (int i = 0; i < 5; ++i) readValue(cin, vtr);
除了另一个答案中显示的迭代器解决方案之外,您还可以在向量的末尾添加五个元素,然后从流中读取新的值:
auto n = vtr.size();
vtr.resize(n + 5);
if (std::cin >> vtr[n] >> vtr[n+1] >> vtr[n+2] >> vtr[n+3] >> vtr[n+4])
{ }
else
{ /* report error */ }
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 将 int 数组转换为 std::vector<int*>
- 启用从"vector<const T>&"到"const vector&"的隐式转换<T>
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 如何检测 std::vector::emplace_back 上的隐式转换损失整数精度
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 如何在C++中将字节向量(std::vector<uint8_t>)转换为不同的uint32_t,uint16_t和uint8_t变量
- 将 cv::Mat 转换为 std::vector 的通用函数
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- 如何在特征中将 std::vector 转换为矩阵?
- C++:如何将 std::vector 操作转换为 Eigen::VectorXf?
- 将结构 std::memcpy 转换为具有足够容量的 std::vector 是未定义的行为<char>吗?
- 将 vector<dlib::p oint> 转换为 NSArray,以便将其传递给 Swift 类
- C++如何将 std::vector 转换为 const<int> std::vector<const int>?
- std::vector 范围构造函数可以调用显式转换吗?
- 将 mwArray 转换为 std::vector<double>
- 如何将 Java double[][] 转换为 C++ <vector<vector>> JNI?
- 如何将 Python 对象转换为 Cython 扩展类型的 std::vector 并返回?
- 将 std::vector<int> 从原始内存转换为数组