该声明
vector<int>v(string s);
Run Code Online (Sandbox Code Playgroud)
如果我打印这个:
cout << v << endl;
Run Code Online (Sandbox Code Playgroud)
结果是"1"!!
解释垃圾发生的原因和发生的垃圾数量.
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v1;
vector<int> v2;
for(int i=0 ; i < 10 ; i++)
v1.push_back(i);
for(int i=11 ; i <= 20 ; i++)
v2.push_back(i);
for(vector<int>::iterator it = v1.begin() ; it != v2.end() ; it++)
cout << *it << " ";
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我知道这很简单,所以我提前道歉.
当我试图通过索引访问向量时,我是segfaulting.例如...
vector<float> some_vec;
int i = 0;
for (some iterator loop here)
{
//snip
some_vec[i] = some_float;
i++;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一个很大的百分比向量(0-100),我试图计算它们中有多少是特定的20%桶(<20,20-40,40-60,60-80,80-100).向量的长度为129605,没有NA值.这是我的代码:
x<-c(0,0,0,0,0)
for(i in 1: length(mail_return))
{
if (mail_return[i]<=20)
{
x[1] = x[1] + 1
}
if (mail_return[i]>20 && mail_return[i]<=40)
{
x[2] = x[2] + 1
}
if (mail_return[i]>40 && mail_return[i]<=60)
{
x[3] = x[3] + 1
}
if (mail_return[i]>60 && mail_return[i]<=80)
{
x[4] = x[4] + 1
}
else
{
x[5] = x[5] + 1
}
}
Run Code Online (Sandbox Code Playgroud)
但是sum(x)给我的长度是133171.不应该是向量的长度,129605?怎么了?
目前正在使用我的DirectX游戏并在常量缓冲区构造函数中使用memset(0)(或VS中的ZeroMemory宏)来使用零初始化所有值,并且它可以正常工作.当我不小心尝试以这种方式初始化包含向量的其他结构时出现问题.根据编译器(VS2010/VS2012),这会导致"矢量迭代器不兼容",std :: vector :: end更加精确.我可以理解memset可能会使向量迭代器无效,但是在我将元素推回到向量之后,为什么"结束"迭代器无法正常工作.它不应该重新定位向量将迭代器结束到正确的位置(在最后一个元素之后)?所有类型的std :: some_container :: end迭代器都受此影响了吗?
#include <vector>
class MyClass
{
public:
MyClass() {
memset(this, 0, sizeof(*this));
}
~MyClass() {}
std::vector<int>& GetData() { return m_data; }
float m_range;
private:
std::vector<int> m_data;
};
int main()
{
MyClass myClass;
myClass.GetData().push_back(1);
myClass.GetData().push_back(2);
for (auto it = myClass.GetData().begin(); it != myClass.GetData().end(); it++)
{
//stuff
}
}
Run Code Online (Sandbox Code Playgroud) 我试图对矢量包含结构进行排序.我必须根据结构中的成员进行排序.排序我使用std :: sort函数和参数作为结构引用和成员来检查条件.
QStringList keys = m_pLDFFrameMap.keys();
foreach (QString key, keys) {
LDFFrameData frmData = m_pLDFFrameMap.value(key);
vector<LDFSignalsData> myList;
QList <LDFSignalsData>sigData = frmData.m_SignalDataList;
for (int i =0; i < sigData.size(); i++) {
LDFSignalsData signal = sigData.at(i);
qDebug()<<"Before signal:"<<signal.startBits<<"Name:"<<signal.frameSignals;
myList.push_back(signal);
}
foreach (LDFSignalsData sig1, myList) {
qDebug()<<"Signal act data:"<<sig1.startBits<<"Name:"<<sig1.frameSignals;
}
sort(myList.begin(), myList.end(), sortingSignals);
for(int i =0; i < myList.size(); i++) {
qDebug()<<"After sorting signal:"<<myList.at(i).startBits<<"Name:"<<myList.at(i).frameSignals;
}
}
Run Code Online (Sandbox Code Playgroud)
sortSignals()的排序函数是
bool sortingSignals(const LDFSignalsData &first, const LDFSignalsData &second)
{
if (first.startBits < second.startBits)
return true;
else …Run Code Online (Sandbox Code Playgroud) push_back使用功能更新值的向量不允许为什么?
std::vector< std::string >goin;
goin.push_back(function(somestringvalue)); // why cant it take update value?
void function(std::string& var)
{
var += "pre";
}
Run Code Online (Sandbox Code Playgroud) 什么是vector< int > v(N)?
它是一个可以具有最大尺寸N(如vector<int> v)的数组吗?
和它一样vector<int> v[N]吗?
我认为这是第一个(如果我错了,请纠正我).
什么是vector< vector< int > > V(N)?它是否像最大尺寸的2D阵列N?vector < int > v[N]和之间有什么区别vector< vector< int > >v(N)?
给定一组整数:
set<int> setA = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
现在我想在一定条件下将整数插入整数向量:
vector<int> vectorB;
for (set<int>::iterator it = setA.begin(); it != setB.end(); it++){
if (*it % 2 == 0){
}else{
vectorB.insert((*it));
count += 1;
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
error: no matching function for call to 'std::vector<int>::insert(const int&)'
Run Code Online (Sandbox Code Playgroud)
为什么?
为什么这不起作用:
class/struct SomeClass
{
public:
int SomeValue;
}
template <class/struct/typename T> class/struct TClass
{
public:
T TObject;
}
vector<TClass<SomeClass*>> *vTcSomeClass = new vector<TClass<SomeClass*>>();
Run Code Online (Sandbox Code Playgroud)
这是非法的还是我做错了?
std::vector<float> a {-0.2, 2.0, -0.9, 2.4, 22.0}
Run Code Online (Sandbox Code Playgroud)
如何获取所有向量元素的绝对值?