std::vector 객체 작업
Exercise 3.13:
vector 객체에 대한 정수 세트를 읽습니다.
(1) 인접한 각 요소의 합을 계산하고 출력합니다.읽는 요소의 개수가 홀수이면 마지막 요소가 합을 구하지 않고 값을 출력하지 않았음을 알립니다.
(2) 머리와 꼬리 원소 두 쌍(첫 번째와 마지막, 두 번째와 밑의 두 번째, 이런 식으로 유추)하고 각 원소의 합을 계산하여 출력한다.
Implement
(1) 인접한 각 요소의 합을 계산하고 출력합니다.읽는 요소의 개수가 홀수이면 마지막 요소가 합을 구하지 않고 값을 출력하지 않았음을 알립니다.
다음은 나의 실현이다. 코드에 문제가 있으면 찾아볼 수 있다.
#include <iostream>
#include <iomanip>
#include <time.h>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::setw;
using std::endl;
using std::string;
using std::vector;
int main()
{
int ival;
vector<int> ivec;
while (cin>>ival)//Ctrl+z
{
ivec.push_back(input);
}
for (vector<int>::size_type index=0; index!=ivec.size()-1; index+=2)
{
cout<<"ivec["<<index<<"]+ivec["<<index+1<<"]="<<ivec[index]+ivec[index+1]<<endl;
}
if (ivec.size()%2)
{
cout<<"ivec["<<ivec.size()-1<<"]="<<ivec[ivec.size()-1]<<" "<<endl;
}
return 0;
}
이미 오류를 찾았습니까?안 되면 컴파일하고 실행하면 어디가 틀렸는지 찾을 수 있어요.
또한, 연습문제 해답 프로그램에서ivec 대상이 비어있는지 판단하는 것도 추가되었다
(2) 머리와 꼬리 원소 두 쌍(첫 번째와 마지막, 두 번째와 밑의 두 번째, 이런 식으로 유추)하고 각 원소의 합을 계산하여 출력한다.
이것은 나의 실현이다.
for (vector<int>::size_type index=0; index!=ivec.size()/2; index++)
{
cout<<"ivec["<<index<<"]+ivec["<<ivec.size()-index-1<<"]="
<<ivec[index]+ivec[ivec.size()-index-1]<<endl;
}
if (ivec.size()%2)
{
cout<<"ivec["<<(ivec.size()-1)/2<<"]="<<ivec[(ivec.size()-1)/2]<<" "<<endl;
}
매번 순환할 때마다 두 번의ivec.를 호출합니다.사이즈 (), 그리고 for조건 판단의 한 번으로 효율이 낮습니다.다음은 의 실현입니다. 전체 for 순환은 한 번만ivec.size (),vector
for (vector<int>::size_type first=0, last=ivec.size()-1; first<last; ++first, --last)
{
cout<<"ivec["<<first<<"]+ivec["<<last<<"]="<<ivec[first]+ivec[last]<<endl;
}
if (ivec.size()%2)
{
cout<<"ivec["<<(ivec.size()-1)/2<<"]="<<ivec[(ivec.size()-1)/2]<<" "<<endl;
}
효율이 현저히 향상된 것은 나의 실현보다 훨씬 높다. 효율적인 순환을 쓰고 수요가 요구하는 논리를 실현하는 것은 정말 쉽지 않다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.