我试图让"CMtoaPlugin :: listArnoldNodes()"返回一个字符串的"数组"
std::vector<std::string> ArnoldNodes = CMtoaPlugin::listArnoldNodes();
std::vector<std::string>::iterator it;
for ( it=ArnoldNodes.begin() ; it < ArnoldNodes.end(); it++ )
{
printf("initialize shader %s\n", *it);
}
Run Code Online (Sandbox Code Playgroud)
但这是我得到的,2个条目,这是正确的,但条目的内容不是
初始化Arnold着色器†¡
初始化阿诺德着色器.
我究竟做错了什么
我有一个std::vector<unsigned short>不知何故包含大于300的数字.
unsigned short 通常只允许0到255,程序中没有任何地方尝试添加大而且可能尝试失败的数字.
怎么会发生这种情况?
编辑:对不起,这不是一个有用的问题,似乎我的usigned short范围错了.
在下面的代码中我想input vector<double>在derived类中存储一个.我通过应用std::vector作为向量的副本赋值传递给setIT函数.我需要它来使用在派生中实现的计算.在此复制分配期间出现内存泄漏.
使用以下内容可以避免这种泄漏:vector<double> * input代替vector<double> input,但我不明白为什么.
任何人都可以澄清这个吗?提前致谢.
#include "utilities.h"
#include <fstream>
using namespace std;
using namespace astro;
class base
{
public:
base () { cout<<" in base default constructor "<<endl; }
virtual void setIT (void *v) = 0;
virtual double compute () = 0;
};
class derived : public base
{
protected:
vector<double> input;
public:
derived ();
virtual void setIT (void *v);
virtual double compute () { /* …Run Code Online (Sandbox Code Playgroud) 我有一个结构矢量.我需要检查结构是否在向量中.整个结构,而不是任何特定的成员.它在编译时抛出了这个错误:
binary '==' : no operator found which takes a left-hand operand of type 'NavigationNode'
(or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)
我的结构:
struct NavigationNode{
int x, y; //their x and y position on the grid
float f, g, h;
int parentGCost;
int value;
};
NavigationNode currentNode;
Run Code Online (Sandbox Code Playgroud)
矢量
vector<NavigationNode> openList;
Run Code Online (Sandbox Code Playgroud)
我的发现:
if (find(closedList.begin(), closedList.end(), currentNode) == closedList.end() )
{
}
Run Code Online (Sandbox Code Playgroud) 我有一个向量,它的元素由两个整数组成.我想先计算每个元素的这2个整数的比率,然后根据这个比率对向量进行排序.
以下代码不会引发错误:
int main()
{
typedef std::vector<int> intstack;
intstack mystack;
mystack.push_back(7);
mystack.push_back(8);
mystack.push_back(9);
mystack.pop_back();
std::cout << mystack.size(); //prints 2
std::cout << mystack[2]; // prints 9
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我原以为该行std::cout << mystack[2]会引发错误,因为该pop_back操作已调整了向量.为什么数据仍可访问?是因为底层数组中的数据仍然存在而且向量pop_back操作只修改了迭代器吗?
我正在玩c ++中的向量,我试图弄清楚向量在内存中的表现......
我做了这样的矢量:vector<int> numbers = { 1, 2, 3, 4, 5, 6 };并提取了一些关于矢量的信息
&numbers:002EF8B8
begin()._Ptr:0031A538
end()._Ptr:0031A550
向量存储单元002EF8B8的数据:
00 9d 31 00 38 a5 31 00 50 a531 00 50 a5 31 00 cc cc cc cc 30 31 82 1f
找到begin()._Ptr并end()._Ptr存储在那里的地址......
和地址范围内的整数:
内存位置的第1个int:0031A538 = 01 00 00 00
内存位置的第二个int:0031A53C = 02 00 00 00
内存位置的第3个int:0031A540 = 03 00 00 00
内存位置的第4个int:0031A544 = 04 00 00 00
内存位置的第5个int:0031A548 = 05 00 …
我有一个矢量:
std::vector<std::unique_ptr<MyAbstract>> myList;
Run Code Online (Sandbox Code Playgroud)
我想在循环中访问成员"id"并删除特定项目:
for (auto it = myList.begin(); it != myList.end();)
{
if (it->id == 2)
{
it = myList.erase(it);
break;
}
else
++it;
}
Run Code Online (Sandbox Code Playgroud)
这条线......
if (it->id == 2)
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
'class std :: unique_ptr'没有名为'id'的成员
这似乎有效:
if (it->get()->id == 2)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么?!这是完整的代码:http: //ideone.com/kFohfA
以下是有疑问的片段:
typedef std::vector<unsigned char> QInput; // defined in an external library
std::vector<QInput> extvec; // defined in a separate function
Run Code Online (Sandbox Code Playgroud)
问题1:是extvec嵌套向量吗?
问题2:如何打印出内容extvec?
我已经尝试extvec使用StackOverflow的许多答案中描述的传统方法打印出内容,但是我遇到了很多错误.所以我决定这可能是一个嵌套的向量.但的形式看起来像来自其他问题不同此.
我有N乘以4的数据,如下所示将数据推回去。
vector<vector<int>> a;
for(some loop){
...
a.push_back(vector<int>(4){val1,val2,val3,val4});
}
Run Code Online (Sandbox Code Playgroud)
N小于13000。为防止不必要的重新分配,我想提前4个空间保留13000。
在阅读了有关该主题的多个相关文章(例如,如何保留多维向量?)之后,我知道以下将完成工作。但是我想使用reserve()或任何类似的函数(如果有)来使用它push_back()。
vector<vector<int>> a(13000,vector<int>(4);
Run Code Online (Sandbox Code Playgroud)
要么
vector<vector<int>> a;
a.resize(13000,vector<int>(4));
Run Code Online (Sandbox Code Playgroud)
如何仅保留内存而不增加向量大小?
c++ ×10
stdvector ×10
c++11 ×2
vector ×2
inheritance ×1
iteration ×1
memory ×1
polymorphism ×1
sorting ×1
stdstring ×1
struct ×1
unique-ptr ×1