这些第二行是抛出这个错误,但我不确定为什么.
std::vector<std::string> weapons(100);
weapons[3] = "Rusty dagger";
Run Code Online (Sandbox Code Playgroud)
-
这是我的整个文件:
//global variables
#ifndef _GLOBAL_
#define _GLOBAL_
#include <vector>
#include <iostream>
#include <string>
//prototypes
void NPCTalk(std::string const& speaker,std::vector<std::string> const& text);
void wait(double seconds);
void regionChange(int amount);
int getPositionInStringVector(std::vector<std::string> const& vec,std::string value);
//variables
std::vector<std::string> weapons(100);
weapons[3] = "Rusty dagger";
//defines
#define RegionChange 3
#endif //__GLOBAL__
Run Code Online (Sandbox Code Playgroud) char el[3] = myvector[1].c_str();
Run Code Online (Sandbox Code Playgroud)
myvector[i]
是一个包含三个字母的字符串.为什么会出现此错误?
std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
Run Code Online (Sandbox Code Playgroud)
tracked
是矢量:
std::vector<Enemy*>
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?(如果我没有提供足够的细节,请说明)
在Lua中,你可以这样做:
foo = a and b or c and d or e
Run Code Online (Sandbox Code Playgroud)
这相当于(至少我相信它相当于):
local foo = nil
if a then
foo = b
elseif c then
foo = d
else
foo = e
end
Run Code Online (Sandbox Code Playgroud)
在C++中是否有与此类似或相似的内容?
这里有一个问题,我试图解决:http://projecteuler.net/problem=20(找到的数字在100的总和!)
我正在使用Lua,它只有一个数字类型的双倍,所以我不得不手动接近它.我使用的代码几乎与我用于问题16的代码相同,它类似(找到2 ^ 1000中的数字之和).然而,这次问题似乎超出了我的算法,在相当长的时间内解决 - 它达到了大约32!在我需要等待超过10秒才能计算下一个总数之前,我需要等待34个!它比我等待的时间更长.有什么方法可以加快速度(使用'原始'Lua - 而不是LuaJIT或类似的东西)?
local sum = {1}
for i=1,100 do
local carry = 0
for v=1,#sum do
local c = carry
carry = 0
local t = sum[v] * i
while t >= 10 do
t = t - 10
carry = carry + 1
end
local s = t + c
while s >= 10 do
s = s - 10
carry = carry + 1
end
sum[v] = s
end
if …
Run Code Online (Sandbox Code Playgroud) 我试图找到一个数组的大小,并且sizeof不能正常工作,因为我的数组是一个指针,而不是一个实际的数组(然后再次,我可能是错的).我是C++的新手,但不是编程.
这是我的功能:
int getSizeOfPointerArray(int a[]){
int n=0;
while(true){
if(!a[n]){
cout << "a[" << n << "] doesn't exist, breaking" << endl;
break;
}
cout << "a[" << n << "] exists with value " << a[n] << " at memory address " << &a[n] << endl;
n++;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
使用参数p调用该函数,其中p为:
p = new (nothrow) int[f];
Run Code Online (Sandbox Code Playgroud)
'f'是3.数组的元素是用以下方法收集的:
for(n=0;n<f;n++){
string c = ((n!=f-1)?", ":" ");
cout << p[n] << c;
}
Run Code Online (Sandbox Code Playgroud)
我期待看到输出中打印的三个元素的内存位置 - 每个四个分开 - 并且说a [4]不存在.相反,它打印了六个 …
我可以对任何类型的std :: map进行参数化吗?
void myFunction(const std::map<std::string,[INSERT_ANY_CLASS]>& tMap);
Run Code Online (Sandbox Code Playgroud) 如果我有一个由一行上的空格分隔的整数列表(例如:50 34 1 3423 5 345)那么将每个整数变量作为单独的整数变量的最佳方法是什么 - 收集整数列表cin
?
std::vector<Ogre::SceneNode*>::iterator itr;
for(itr=mSelectedObjects.begin();itr!=mSelectedObjects.end();itr++){
itr->showBoundingBox(true); //here
}
Run Code Online (Sandbox Code Playgroud)
我在标记的行上得到"表达式必须具有指针类型",我不知道为什么.有人可以帮忙吗?
gameObjects
是一个std::map<sf::String,VisibleGameObject*>
,results
是一个std::map<sf::String,VisibleGameObject*>::iterator
.当这运行:
return gameObjects.erase(results);
Run Code Online (Sandbox Code Playgroud)
我期望VisibleGameObject的析构函数运行,这是:
VisibleGameObject::~VisibleGameObject(){
m_pSceneManager->removeSprite(name);
}
Run Code Online (Sandbox Code Playgroud)
永远不会运行,直到持有的类gameObjects
被销毁,然后运行:
GameObjectManager::~GameObjectManager(){
std::for_each(gameObjects.begin(),gameObjects.end(),GameObjectDeallocator());
}
struct GameObjectDeallocator{
void operator()(const std::pair<sf::String,VisibleGameObject*>&p) const{
delete p.second;
}
};
Run Code Online (Sandbox Code Playgroud)
然后它确实运行.为什么不在第一种情况下运行?
使用SFML 2.0
谢谢