如何在不声明变量的情况下在向量中 emplace_back (追加)..?
how to emplace_back (append) in vector without declaring variables..?
如果输入的数量作为第一个输入给出。
如果我需要将它们存储在 vector
我可以通过创建一个变量并使用我可以将其附加到向量
中的变量来轻松地做到这一点
我很想知道,有没有其他方法可以让我不必使用变量..
输入
4
1 5 3 2
向量如何接受输入
vector<int>vec;
for(int i=0;i<n;i++)
{
int x;
cin>>x; // any idea to remove using a variable here..?
vec.emplace_back(x);
}
数组如何接受输入
int array[n];
for(int i=0;i<n;i++)
cin>>array[i];
是的,就这样做:
std::cin >> vec.emplace_back();
C++17 中 vector::emplace_back()
的 return 类型不再是 void
。相反,它 return 是对插入元素的引用。所以 vec.emplace_back()
将默认构造一个元素, return 它的引用。
或使用STL算法(适用于C++03):
vector<int> vec;
vec.reserve(n); // good practice to reduce reallocation of memory
std::copy_n(std::istream_iterator<int>{std::cin}, n, std::back_inserter(vec));
如果输入的数量作为第一个输入给出。
如果我需要将它们存储在 vector
我可以通过创建一个变量并使用我可以将其附加到向量
中的变量来轻松地做到这一点
我很想知道,有没有其他方法可以让我不必使用变量..
输入
4
1 5 3 2
向量如何接受输入
vector<int>vec;
for(int i=0;i<n;i++)
{
int x;
cin>>x; // any idea to remove using a variable here..?
vec.emplace_back(x);
}
数组如何接受输入
int array[n];
for(int i=0;i<n;i++)
cin>>array[i];
是的,就这样做:
std::cin >> vec.emplace_back();
C++17 中 vector::emplace_back()
的 return 类型不再是 void
。相反,它 return 是对插入元素的引用。所以 vec.emplace_back()
将默认构造一个元素, return 它的引用。
或使用STL算法(适用于C++03):
vector<int> vec;
vec.reserve(n); // good practice to reduce reallocation of memory
std::copy_n(std::istream_iterator<int>{std::cin}, n, std::back_inserter(vec));