目前我必须vector.push_back()多次使用.
我目前使用的代码是
std::vector<int> TestVector;
TestVector.push_back(2);
TestVector.push_back(5);
TestVector.push_back(8);
TestVector.push_back(11);
TestVector.push_back(14);
Run Code Online (Sandbox Code Playgroud)
有没有办法只使用vector.push_back()一次,只是将多个值传递给向量?
这个C++语句是什么意思?
vector<int>::size_type x;
Run Code Online (Sandbox Code Playgroud)
而且,范围运算符::在这里的用途是什么?换句话说,我们如何用英语阅读这个陈述?
例如,对于X::x(){...}我们说x()是member function的class X.
据我所知,任何地方都std::back_inserter可以在STL算法中运行,你可以传递一个std::inserter构造.end()而不是:
std::copy(l.begin(), l.end(), std::back_inserter(dest_list));
std::copy(l.begin(), l.end(), std::inserter(dest_list, dest_list.end()));
Run Code Online (Sandbox Code Playgroud)
并且,不像back_inserter,据我所知,inserter可以为任何STL容器工作!我试了一下成功为std::vector,std::list,std::map,std::unordered_map来这里之前感到惊讶.
我想也许是因为push_back某些结构的速度可能更快insert(.end()),但我不确定......
对于std::list(有道理)似乎并非如此:
// Copying 10,000,000 element-list with std::copy. Did it twice w/ switched order just in case that matters.
Profiling complete (884.666 millis total run-time): inserter(.end())
Profiling complete (643.798 millis total run-time): back_inserter
Profiling complete (644.060 millis total run-time): back_inserter
Profiling complete (623.151 millis total run-time): inserter(.end()) …Run Code Online (Sandbox Code Playgroud) 我们有用于将单词转换为向量的模型(例如word2vec模型).是否存在将句子/文档转换为向量的类似模型,可能使用为单个单词学习的向量?
我a坐在坐标处有一个欧几里得矢量(0, 1).我想旋转a通过围绕原点90度(顺时针)(0, 0).
如果我对这应该如何工作有一个正确的理解,旋转后的结果(x,y)坐标应该是(1, 0).如果我将它旋转45度(仍然顺时针),我会期望得到的坐标(0.707, 0.707).
theta = deg2rad(angle);
cs = cos(theta);
sn = sin(theta);
x = x * cs - y * sn;
y = x * sn + y * cs;
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,angle值为90.0度,结果坐标为:(-1, 1).而我真的很困惑.以下链接中的示例代表了上面显示的相同公式?
我做错了什么?或者我误解了矢量是如何旋转的?
我有一个vector的pair像这样的:
vector<pair<string,double>> revenue;
Run Code Online (Sandbox Code Playgroud)
我想在地图中添加一个字符串和一个double,如下所示:
revenue[i].first = "string";
revenue[i].second = map[i].second;
Run Code Online (Sandbox Code Playgroud)
但由于收入未初始化,因此出现了出界错误.所以我尝试使用vector::push_back这样的:
revenue.push_back("string",map[i].second);
Run Code Online (Sandbox Code Playgroud)
但那说不能采取两个论点.那么,如何可以添加到这个vector的pair?
我知道向量的大小,这是初始化它的最佳程序?:
选项1
vector<int> vec(3); //in .h
vec.at(0)=var1; //in .cpp
vec.at(1)=var2; //in .cpp
vec.at(2)=var3; //in .cpp
Run Code Online (Sandbox Code Playgroud)
选项2
vector<int> vec; //in .h
vec.reserve(3); //in .cpp
vec.push_back(var1); //in .cpp
vec.push_back(var2); //in .cpp
vec.push_back(var3); //in .cpp
Run Code Online (Sandbox Code Playgroud)
我猜选项2优于1.是吗?其他选择?
在C++中,可以创建一个预定义大小的数组,例如20 int myarray[20].但是,关于向量的在线文档并未显示初始化向量的相似方法:相反,应使用例如初始化向量std::vector<int> myvector (4, 100);.这给出了大小为4的向量,其中所有元素都是值100.
如何使用预定义的大小初始化向量而没有预定义的值,就像使用数组一样?
这是我的交换功能:
template <typename t>
void swap (t& x, t& y)
{
t temp = x;
x = y;
y = temp;
return;
}
Run Code Online (Sandbox Code Playgroud)
这是我的函数(在旁注v存储字符串)调用交换值,但每当我尝试使用向量中的值调用时,我得到一个错误.我不确定我做错了什么.
swap(v[position], v[nextposition]); //creates errors
Run Code Online (Sandbox Code Playgroud) 假设我有一个std :: vector of structs.如果向量是清晰的()'d,内存会发生什么?
std::vector<myStruct> vecs;
vecs.resize(10000);
vecs.clear();
Run Code Online (Sandbox Code Playgroud)
内存是否会被释放,或仍然作为可重用缓冲区附加到vecs变量?