我有一个vectorint ...我只想交换两个值.
std::vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
vec.push_back(6);
vec.push_back(7);
vec.push_back(8);
std::swap(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)
在调用swap之前,我有我的vec:
[0,1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
在std::swap(...)我希望将vec作为:
[8,1,2,3,4,5,6,7,0]
Run Code Online (Sandbox Code Playgroud)
但它仍然是初始状态.这里有什么问题?
我是c ++的初学者,我正在努力理解向量.
我知道基本格式是:
vector <dataType> vectorName;
Run Code Online (Sandbox Code Playgroud)
人们告诉我,矢量就像数组.但是,我不知道
理解是对于数组你可以这样做:
array[] = {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
但对于矢量,您似乎无法将其设置为列表.或者你有
继续使用.push_back().
另外,你可以使用vectorName[1]或不喜欢的东西吗?
任何人都可以向我解释这个吗?
谢谢.
如果我有这样的矢量:
struct vector3D {
float x;
float y;
float z;
};
vector3D aVector = { 3.4, 4.4, 9.3 }; // my vector
Run Code Online (Sandbox Code Playgroud)
哪有我cout的aVector控制台?
我正在使用inet v3.4.0.我正在尝试创建一个移动模型.但每当我创建任何类型的std :: vector时,它都会随机大小初始化.
初始化时,它永远不会有零大小.这应该发生吗?因为从C++向量,我看到在创建向量时,例如
std::vector <int*> a;
Run Code Online (Sandbox Code Playgroud)
a 应该有一个大小为零.
我正在进行C++任务,并且在push_back方面存在一些错误问题.错误消息显示:
没有匹配的成员函数来调用'push_back'.
该错误发生在以下行: book.push_back(name,number,email);
这是代码:
//Program
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
// Declaring ye ol' phonebook structure //
struct phoneBook {
public:
string name;
int number;
string email;
};
int main(){
// Declaring the VECTOR of the Phonebook
vector<phoneBook>book;
string fileName;
//reading the file
cout <<"Enter file name to read contacts: ";
cin >> fileName;
std::string myline;
std::ifstream infile(fileName);
while (std::getline(infile, myline))
{
std::istringstream iss(myline);
string name;
int number;
string email;
if(!(iss …Run Code Online (Sandbox Code Playgroud) 我有一个vectorC++.
vector<bool> trumpIsGoodFor(42);
Run Code Online (Sandbox Code Playgroud)
我需要设置除第24个元素之外的所有元素true.
我想使用C++ 11/14使用一行/两行或优雅的作业来完成它.
我正在寻找有关矢量迭代的一些提示.我正在尝试完成一个挑战,你必须实现一个函数(SumOfTwo),它接受两个向量和一个和作为参数,并且必须检查两个向量中是否有任何数字对,如果添加可以给出总和作为参数传递.
我的功能很好,除了它不包括500毫秒的时间限制.我觉得有一个更好的方法来迭代两个向量而不是两个for循环,但我觉得非常卡住......
bool sumOfTwo(std::vector<int> a, std::vector<int> b, int v) {
if((a.empty()) || b.empty()){
return false;
}
for (std::vector<int>::iterator it1 = a.begin(); it1<=a.end(); ++it1) {
for (std::vector<int>::iterator it2 = b.begin(); it2<=b.end(); ++it2) {
if ((*it1 + *it2) == v){
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud) 我曾尝试运行此代码
// vector::size
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myints;
std::cout << "size: " << myints.size() << '\n';
std::cout << "size: " << myints.size()-1 << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是输出来了
0
垃圾价值
它应该是
0
-1
这是:代码
我正在尝试使用编译器资源管理器了解std::vector为其及其emplace_back (or) push_back函数生成的汇编代码.
注意:优化级别为0,即使用-O0
我无法理解的一件事是,为什么有两个析构函数被调用而不是一个(因为你可以看到只创建了一个向量.如果我假设一个临时对象是在内部创建的,那么我必须看到对std::vector构造函数的调用.
这与clang编译器也是一样的.
有人可以解释一下这里发生了什么吗?
编辑1:
#include <vector>
int main()
{
std::vector<int> vec;
vec.emplace_back(10);
}
Run Code Online (Sandbox Code Playgroud)
编辑2:删除屏幕截图,因为它很难阅读.
当我为练习编写一些代码时遇到了问题.这是关于数组大小设置.我尝试了几种不同的方法,但它们没有用.
这是我的代码:
float mean(vector<float> numbers){
int size = numbers.size();
float dizi[size];
float ort,toplam = 0.0;
for(unsigned int i=0; i<numbers.size(); i++){
dizi[i] = numbers[i];
toplam += dizi[i];
}
ort = toplam / numbers.size();
return ort;
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误是"variable length array used"和"variable length arrays are a C99 feature".解决办法是什么?