在性能方面,什么会更快?有区别吗?它是平台依赖的吗?
//1. Using vector<string>::iterator:
vector<string> vs = GetVector();
for(vector<string>::iterator it = vs.begin(); it != vs.end(); ++it)
{
*it = "Am I faster?";
}
//2. Using size_t index:
for(size_t i = 0; i < vs.size(); ++i)
{
//One option:
vs.at(i) = "Am I faster?";
//Another option:
vs[i] = "Am I faster?";
}
Run Code Online (Sandbox Code Playgroud) 我现在正在使用编程语言R. 我有一个矢量:
a <- c("aa", "bb", "cc")
Run Code Online (Sandbox Code Playgroud)
我想将它们粘贴到系统命令中,我现在正在尝试这种方式:
args <- paste(a, sep=" ")
system(paste("command",args, sep=" "))
Run Code Online (Sandbox Code Playgroud)
但现在我只得到参数aa,我想要参数aa,bb和cc ......
谁知道我做错了什么?
我是C++和Qt的新手,但我非常擅长C#/ Java.
关键是我喜欢跨平台,但我和Qt混淆了.是不是std::vector已经跨平台了,Qt不提供相当于非跨平台的东西吗?
另外如何File与QFile不同?
链接会很好,谢谢:)
我试过了:
std::string str = "hello";
std::vector<char> data;
std::copy(str.c_str(), str.c_str()+str.length(), data);
Run Code Online (Sandbox Code Playgroud)
但它不工作=(所以我不知道如何复制std::string到std::vector<char>或std::vector<uchar>?
我想用固定的向量划分矩阵的每一行.例如
mat<-matrix(1,ncol=2,nrow=2,TRUE)
dev<-c(5,10)
Run Code Online (Sandbox Code Playgroud)
给mat/dev分割各列由dev.
[,1] [,2]
[1,] 0.2 0.2
[2,] 0.1 0.1
Run Code Online (Sandbox Code Playgroud)
但是,我希望得到这个结果,即按行进行操作:
rbind(mat[1,]/dev, mat[2,]/dev)
[,1] [,2]
[1,] 0.2 0.1
[2,] 0.2 0.1
Run Code Online (Sandbox Code Playgroud)
到那儿有明确的命令吗?
如果你有一个已调整大小的STL向量,是否可以安全地获取元素0的地址并假设其余的向量将跟随内存?
例如
vector<char> vc(100);
// do some stuff with vc
vc.resize(200);
char* p = &vc[0];
// do stuff with *p
Run Code Online (Sandbox Code Playgroud) 我试图在一个攻击向量上做一个foreach,每个攻击有一个唯一的ID,1-3.
类方法采用1-3的键盘输入.
我试图使用foreach在m_attack中运行我的元素以查看数字是否匹配,如果它确实...做某事.
我看到的问题是:
a'for each' statement cannot operate on an expression of type "std::vector<Attack
Run Code Online (Sandbox Code Playgroud)
我是否完全错了,我有C#的经验,并且是我的基础,任何帮助都将受到赞赏.
我的代码如下:
在标题中
vector<Attack> m_attack;
Run Code Online (Sandbox Code Playgroud)
在班上
int Player::useAttack (int input)
{
for each (Attack* attack in m_attack) // Problem part
{
//Psuedo for following action
if (attack->m_num == input)
{
//For the found attack, do it's damage
attack->makeDamage();
}
}
}
Run Code Online (Sandbox Code Playgroud) 在列表前面很容易:
user=> (conj '(:bar :baz) :foo)
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)
附加到矢量很简单:
user=> (conj [:bar :baz] :foo)
[:bar :baz :foo]
Run Code Online (Sandbox Code Playgroud)
在获取向量时,我如何(惯用)前置到向量?这不起作用,因为它返回seq,而不是向量:
user=> (cons :foo [:bar :baz])
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)
这很难看(IMVHO):
user=> (apply vector (cons :foo [:bar :baz]))
[:foo :bar :baz]
Run Code Online (Sandbox Code Playgroud)
注意:我基本上只想要一个可以附加和前置的数据结构.附加到大型列表应该有很大的性能损失,所以我想到了矢量..
我正在写一小段代码,我必须根据向量元素中的值将值插入某个地方的C++ STL向量中.我正在使用该insert()功能来完成此任务.我意识到,当我想在向量的末尾添加一个新元素时,我可以简单地使用push_back().但为了保持我的代码看起来不错,我想专门使用insert(),它将指向所需插入点之后的元素的迭代器和要插入的值作为输入.如果作为参数传入的迭代器的值是v.end(),v我的向量在哪里,它的工作方式是否相同push_back()?
非常感谢!
我想将一个元素插入到向量的特定位置,我可以使用一个赋值:
// vec1 and 2 have the same length & filled in somehow
vec1;
vec2;
vec1[i] = vec2[i] // insert vec2[i] at position i of vec1
Run Code Online (Sandbox Code Playgroud)
或者我必须使用insert():
vector<sometype>::iterator iterator = vec1.begin();
vec1.insert(iterator+(i+1), vec2[i]);
Run Code Online (Sandbox Code Playgroud)